1

MATLAB の System Identification ツールボックス (アプリ) とコマンド ラインを使用して、クワッドコプターのモデルを識別しようとしています。入力信号と出力信号の両方が不均一にサンプリングされています。具体的には、連続する測定間のサンプル時間は、実験全体で一定ではありません。

以下を使用して、MATLAB で不均一なデータ セットを作成できることがわかりました。

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

ここでtime、不均一なサンプリング時間ベクトルが含まれます。しかし、このような不均一なデータを受け入れる MATLAB の線形または非線形モデルは見つかりませんでした。

誰かがヒントをくれれば幸いです。

4

1 に答える 1

1

システム同定ツールボックスでの不規則なサンプリング データのサポートはかなり制限されています。System Identification Toolbox の多くの機能では、定期的にサンプリングされたデータが必要です。このリンクを参照してください

の使用から、iddata()入力データと出力データは同時にペアで測定されると思いますが、隣接するサンプル間のタイムスパンは規則的ではありません。

この場合、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'})

トリックを行う必要があります。

(元の) サンプリング周波数が関連するダイナミクスの周波数よりも大きい場合、エラーは小さいはずです。クアドロコプターの (剛体) ダイナミクスは 1 Hz のオーダーであるため、通常は 50 または 100 Hz で入力および出力データを測定することで問題ありません (ただし、これはアプリケーションによって異なる場合があります)。

于 2016-10-19T12:46:01.577 に答える