このような以下のプログラムを実行しました.図は得られたdとLchをFFTしたものなのですが,dはxを単純遅延させただけなので本来形は同じになるはずなのですが,半円を何度も描いているようなグラフになっています.特にプログラムに問題はなさそうなのですが,どうしてでしょうか.
1 view (last 30 days)
Show older comments
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)
4 Comments
Accepted Answer
Shoumei
on 29 May 2020
単純に0データを挿入して遅延させると、0データから、有効データの境界で不連続点が発生し、それが高調波成分となります。それがFFTの結果に現れているものと推測します。
予想しない結果が得られることはよくあります。今後も沢山そのような場面に遭遇すると思います。
そういうときは、まず単純なデータ(例えばSin波)などで、同じようなことをやってみて、現象を理解することをお勧めします。
5 Comments
More Answers (0)
See Also
Categories
Find more on スペクトル測定 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!