ハマっている「お菓子」を教えて!

MATLABを使ってゆらぎの分析をしたいのですが、
FFT後、両対数軸で表示しようとすると、「警告:負のデータは無視されます」と出てきて、グラフが表示されなかったり、1本の直線が表示させたり、上手く表示できません。
FFTをする、対数軸で表示、の間にワンクッショなにかが必要なのでしょうか?

詳しい方教えてください。

一応テキストを見ながら作ったのですが、貼っておきます。

clear;
fs=10000;
dft_size=1024;
x=wavread('.wav');  //空けてあります。
w=HanningWindow_(dft_size);
for n=1:dft_size,
x(n)=x(n)*w(n);
end
X=fft(x,dft_size);
A=zeros(1,dft_size/2+1);
frequency=zeros(1,dft_size/2+1);
for k=1:dft_size/2+1,
A(k)=20*log10(abs(X(k)));
frequency(k)=(k-1)*fs/dft_size;
end

subplot(2,1,1),
plot(frequency,A);
xlabel=('周波数[Hz]');
ylabel=('振幅[db]');

% 対数軸で表示

subplot(2,1,2),
loglog(frequency,A);
xlabel=('周波数[Hz]');
ylabel=('振幅[db]');

A 回答 (1件)

単純にlog(-1)はxy平面には表現できないだけです。


log(0)=-∞もグラフには当然表示できません。
0以下だった場合0.001に置き換えるなどの処理があれば、
表示できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報