システム同定のためのM系列信号をMatlabで生成してみた


概要

システム同定のためのM系列信号をMatlabで生成してみた

使用ソフト

MATLAB バージョン 9.8

System Identification Toolbox バージョン 9.12

M系列信号とは

M系列信号とは様々な周波数成分を含んだ疑似的な白色信号である。
システム同定をするために理想となる入力信号は全周波数が含んだ信号(白色信号)であるが、全周波数を含む信号を作り出すのは現実的に不可能なので、それに近い信号をつくる必要がある。それがM系列信号である。
M系列信号の生成式は以下であるが

$ x_k =a_1x_{k-1} \quad XOR \quad a_2x_{k-2} \quad XOR ・・・\quad a_nx_{n-3} $
私自身なぜこの式になるかは理解が追い付かず。。。

MatlabでM系列信号を生成してみた

M系列信号を生成するときにパラメータとしてシフトレジスタnがある
n = 9のときとn=5のときで波形を比較してみる

n = 9;
N = 2^n;
u = idinput(N,'prbs',[n,1],[-1,1]);

subplot(311)
stairs(u), axis([0 N -1.2 1.2]);
xlabel('time[sec]') 
ylabel('信号') 
title('M系列信号');

subplot(312),plot(covf(u, N)); axis([0 N -0.5 1]);
xlabel('ラグ') 
ylabel('相関') 
title('自己相関関数');
subplot(313), periodogram(u);
title('パワースペクトル');

n = 9のとき
M_signal_make

n = 5のとき

自己相関関数:
信号の時間をずらして、ずらす前後でどれだけ信号が似ているか
⇒相関が小さいほど周期性のない信号
パワースペクトル:各周波数帯の成分がどれだけ含まれているか
⇒0~1の間で

わかったこと

上記結果よりシフトレジスタを多くすることで含有周波数が多い

今後

ノンパラメトリックモデルの同定を学習していく

参考

Matlabによる制御のためのシステム同定
https://qiita.com/Fuminori_Souma/items/847566b80c47ae7766c1

最後に

アドバイスありましたら何卒よろしくお願い申し上げます。