2016-09-27 7 views
0

MATLAB의 시스템 식별 도구 상자 (응용 프로그램)와 명령 줄을 사용하여 쿼드 코프의 모델을 식별하려고합니다. 두 입력 및 출력 신호 모두 , 구체적으로, 연속 측정 사이의 샘플 시간은 실험을 통해 일정하지 않습니다. 불규칙한 (불규칙한) 샘플 데이터가있는 시스템 ID

는 I가 사용 MATLAB에 불균일 한 데이터 세트를 생성하는 것이 가능하다는 것을 발견 time가 비 균일 샘플링 시간 벡터를 포함

FlightData = iddata(inputs, outputs, [],'SamplingInstants', time, 'Name', dataName); 

. 그러나 이러한 종류의 비 균일 데이터를 허용하는 선형 또는 비선형 모델을 MATLAB에서 찾을 수 없습니다.

아무도 힌트를 줄 수 있다면 감사하겠습니다.

+0

모델을 만들려고하는 데이터에 대해 많은 정보를 제공하지 않고 있습니다 ... – Trogdor

+0

글쎄, 데이터 유형이 중요하다고 생각하지는 않지만 입력 데이터는 4 PWM (펄스 폭 변조)는 각 시간 샘플마다 4 개의 모터로 전송되며, 내 출력 데이터는 쿼드 코터의 태도를 설명하는 각 샘플링 시간에 오일러의 각도 집합입니다. –

답변

0

시스템 식별 도구 상자에서 불규칙한 샘플 데이터를 지원하는 것은 매우 제한적입니다. System Identification Toolbox의 많은 기능에는 정기적으로 샘플링 된 데이터 see this link이 필요합니다.

귀하의 입력 & 출력 데이터가 같은 순간에 쌍으로 측정되었지만 인접한 샘플 간의 시간 간격은 일정하지 않은 것으로 보입니다.

이 경우 interp1과 같이 몇 가지 (선형) 보간법을 사용할 수 있습니다. 이것은 추정에 약간의 오류를 가져올 수 있지만 간단하고 빠른 접근법입니다. 정기적 인 시간 단계를 사용하여 새로운 시간 격자를 정의하고이를 보간하면됩니다.

% create some dummy data 
time = rand(20,1);         % irregular sampled measurements 
input = sin(2*pi*time);       % some input signal 
output = cos(2*pi*time);       % some output signal 

% define new time vector and interpolate input and output data 
Ts = 0.01;           % new sampling time in seconds 
newTime = min(time) : Ts : max(time);    % new time vector 
inputInterp = interp1(time, input, newTime )  % interpolated input data 
outputInterp = interp1(time, output, newTime ) % interpolated output data 

% lets see what just happend 
figure 
plot(time,input,'o'), hold on 
plot(time,output,'ro'); 

plot(newTime, inputInterp, 'x') 
plot(newTime, outputInterp, 'rx') 

legend({'Original Input', 'Original Output', 'Interpolated Input', 'Interpolated Output'}) 

트릭을 수행해야합니다.

(원본) 샘플링 빈도가 관련 역학의 빈도보다 큰 경우 오류가 적어야합니다. 쿼드 로코터의 (강체) 동역학은 1Hz 단위이므로 50 또는 100Hz에서 입력 및 출력 데이터를 측정하는 것이 일반적으로 좋습니다 (그러나 이는 응용 프로그램에 따라 다를 수 있음).