|
本帖最后由 wdhd 于 2016-9-18 13:18 编辑
原帖由 lianmei1984 于 2009-3-19 16:58 发表
[求助频谱图幅值与fft变换点的关系
[x1,fs,Nbits]=wavread('110.wav');
[a,b]=size(x1); %好像就差这儿
t=0:1/a:(1-1/a);
Au=3;
d=[Au*cos(2*pi*2000*t)]';
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=[Au*cos(2*pi*2000*t)]';
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)))。
|
|