2016-09-27 10 views
0

MATLABのシステム識別ツール(アプリケーション)とコマンドラインを使用して、クワッドコプロセッサのモデルを識別しようとしています。私は入力信号と出力信号の両方がで、不均一にサンプリングされています、具体的には、連続測定間のサンプル時間は実験を通して一定ではありません。 不均一な(不規則な)サンプリングデータを使用したシステム識別

は、私はそれを使用して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のオーダであるため、50Hzまたは100Hzの入力と出力のデータを測定するのが普通です(ただし、これはアプリケーションによって異なる場合があります)。