如何在不使用FFT的情况下绘制wav的傅里叶变换

时间:2014-03-06 11:10:07

标签: matlab debugging

如何在不使用wav的情况下绘制FFT声音的傅里叶变换? 我在整个信号上采用大小为256的矩形窗口。

以下是我的代码:

我的代码:

[wave,fs]=wavread('.\Sound clip 32.wav');

sound(wave,fs); 

t=1:1/fs:length(wave)-1/fs;

plot(t,wave);

n=length(wave)-1; 

for l=1:n,

    x(l)=0;
end

for i=1:n,
     for h=1:256,
        x(i)=x(i)+wave(h)*(exp(-(j*2*pi*i*h)/n));
     end
end

f=1:fs/n:n;

wavefft=abs(x); 

plot(f,wavefft);

但我收到此错误

错误:

  

???使用==>时出错绘制
      矢量必须长度相同。

     

==>中的错误alirezabahrami at 8 plot(t,wave);

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

第一个绘图错误是由twave长度不同引起的。你可以截断那两个中最长的然后绘制,但无论如何,t只是一个线性增加的向量,所以你可以写

plot (wave)

它会显示相同的东西,即你的音频波。 如果你写plot(t),你就会得到一条对角线。

进一步向下你有完全相同的问题,所以只需写:

plot(wavefft)