PDA

查看完整版本 : 关于快速傅里叶变换的功率谱


handsomelufeng
2008-10-22, 00:01
关于快速傅里叶变换的功率谱
本人在做快速傅里叶的一道问题时,遇到了这样一个困难,就是怎样绘制快速傅里叶的频谱
假设有一个信号x(t) = 3cos(πt) + 2cos(3πt) + cos(6πt)。建立这个信号被噪声干扰的一个模
型,然后计算FFT检查信号的频谱。时间选10秒。
首先我们定义时间区间:
177
>> t = 0:0.01:10;
现在我们定义信号:
>> x = 3*cos(pi*t) + 2*cos(3*pi*t) + cos(6*pi*t);
为了模拟噪声,我们随机产生一些数字然后把它们添加到信号中去。要产生随机数字,
我们可以调用randn来做:
>> x_noisy = x + randn(size(t));
我们绘制这两个图象,看看噪声的影响情况。我们显示了前1000毫秒内未
受干扰的原始信号图象。用来绘制这个图象的命令是:
>> plot(1000*t(1:100),x(1:100)), xlabel('时间(ms)'), title('原始信号')
信号的噪声
现在我们绘制这一时间内的噪声信号。命令是:
>> plot(1000*t(1:100),x_noisy(1:100)),xlabel('时间(ms)'), title('噪声信号')。
噪声信号看起来真让人绝望。通过计算傅立叶变换,我们可以搜集原始信号的有用信息
。输入fft(f, n),我们能够计算函数f的n个点的快速傅立叶变换,仿效MATLAB帮助中给出的
例子,我们计算函数有512个点的傅立叶变换:
>> FT = fft(x_noisy,512);
信号中的功率可以通过计算傅立叶变换和它的共扼复数的乘积再除以总点数求得:
>> P = FT.*conj(FT)/512;
现在想问:如何绘制这个带有噪声的信号的频率谱。

songzy41
2008-10-23, 17:35
采样频率是100,要画带噪信号功率谱,可以有:
df=100/512;
m=1:257;
ff=(m-1)*df;
plot(ff,P(m));