lianmei1984 发表于 2009-3-19 16:58

求助频谱图幅值与fft变换点的关系

本帖最后由 wdhd 于 2016-9-18 13:18 编辑

  =wavread('110.wav');
  =size(x1); %好像就差这儿
  t=0:1/a:(1-1/a);
  Au=3;
  d=';
  d1=fft(d);
  f=fs*(0:511)/1024;
  subplot(2,1,1);plot(abs(d1(1:512)));
  title('原始语音信号FFT频谱');
  subplot(2,1,2);plot(f,abs(d1(1:512)));
  title('原始语音信号频谱');xlabel('Hz');ylabel('magnitude');图形见附件1
  fft变换点数为1024时;
  d1=fft(d,1024);
  f=fs*(0:511)/1024;
  subplot(2,1,1);plot(abs(d1(1:512)));
  title('原始语音信号FFT频谱');
  subplot(2,1,2);plot(f,abs(d1(1:512)));图形见附件2
  请高手帮忙看下。为什么幅值相差那么大阿?

yelv123 发表于 2009-3-19 18:39

[原创]关于FFT的频谱对应关系
http://forum.vibunion.com/forum/thread-23614-1-5.html

songzy41 发表于 2009-3-19 20:42

本帖最后由 wdhd 于 2016-9-18 13:18 编辑

原帖由 lianmei1984 于 2009-3-19 16:58 发表
[求助频谱图幅值与fft变换点的关系
  =wavread('110.wav');
  =size(x1); %好像就差这儿
  t=0:1/a:(1-1/a);
  Au=3;
  d=';
  d1=fft(d);
  f=fs*(0:511)/1024;
  subplot(2,1,1);plot(abs(d1(1:512)));
  title('原始语音信号FFT频谱');
  subplot(2,1,2);plot(f,abs(d1(1:512)));
  title('原始语音信号频谱');xlabel('Hz');ylabel('magnitude');图形见附件1
  %fft变换点数为1024时;
  d1=fft(d,1024);
  f=fs*(0:511)/1024;
  subplot(2,1,1);plot(abs(d1(1:512)));
  title('原始语音信号FFT频谱');
  subplot(2,1,2);plot(f,abs(d1(1:512)));图形见附件2

  看了楼主提供的程序和图,似乎有些不太对劲,附件1和附件2似乎不是同一个信号?同时程序中有些不妥之处。
  1,在读入语音信号后,给出了fs,则时间序列t应设置为t=0:1/fs:(1-1/fs);而不是t=0:1/a:(1-1/a),除非a=fs。
  2,按程序:
  subplot(2,1,1);plot(abs(d1(1:512)));
  title('原始语音信号FFT频谱');
  subplot(2,1,2);plot(f,abs(d1(1:512)));
  title('原始语音信号频谱');xlabel('Hz');ylabel('magnitude');图形见附件1
  给出的图应有上下两幅,而现在只有一幅,不知是(2,1,1)的图还是(2,1,2)的图。附件2一样有这问题。
  3,附件1给出的似乎是语音信号的图,而附件2似乎是正弦信号的图。
  但按程序附件1的图是plot(abs(d1(1:512))); 即d1的图,d1又是从余弦信号变换而来的:
  d=';
  d1=fft(d);
  频谱应是一条谱线,但谱图中不是一条谱线,所以我说象音信号的谱图。
  4,如果d1=fft(d),d的长度又不是1024,则频率就不能这样设置了:f=fs*(0:511)/1024,只有d1=fft(d(1:1024))时,才能这样设置plot中的频率:plot(f,abs(d1(1:512)))。

soup2008 发表于 2009-4-24 14:30

学习了。。
页: [1]
查看完整版本: 求助频谱图幅值与fft变换点的关系