質問: このような以下のプログラムを実行しました.図は得られたdとlchをfftしたものなのですが,dはxを単純遅延させただけなので本来形は同じになるはずなのですが,半円を何度も描いているようなグラフになっています.特にプログラムに問題はなさそうなのですが,どうしてでしょうか. clear; [data,fs]=audioread('2000rpm.wav'); a=[0,1,0,0,0,0,0,0]; l=8; lch=data(:,1); n=numel(lch); d=zeros(1,n); for n=l:n d(n)=a*lch(n-l+1:n); end f=fs/1024:fs/1024:fs; fft_lch=fft(lch,1024);%fftは同様にしてdも行いました db_lch=mag2db(abs(fft_lch)); plot(f,db_lch)
回答: 単純に0データを挿入して遅延させると、0データから、有効データの境界で不連続点が発生し、それが高調波成分となります。それがfftの結果に現れているものと推測します。 予想しない結果が得られることはよくあります。今後も沢山そのような場面に遭遇すると思います。 そういうときは、まず単純なデータ(例えばsin波)などで、同じようなことをやってみて、現象を理解することをお勧めします。