有一组数据,用FFT作频谱分析,并画出幅频特性、相频特性曲线
示波器记录了一组数据,有2500个,想用matlab的FFT进行频谱分析,并画出幅频特性、相频特性曲线。第一次接触matlab,希望各位老师同学帮忙。 养成好习惯, 先请动手搜一下!:loveliness: 搜了,在各个论坛蹲两天了,楼上的帮帮我。。。 看看这里有没有你要问的问题--信号处理专栏话题索引
http://forum.vibunion.com/forum/thread-49413-1-1.html 楼上的,帮我看看我写的这程序对不对?
clear
x=xlsread('D:\sensor.xls'); %数据我放在excel里了,只取了2048个
N=length(x); fs=25000; t=(0:N-1)/fs;
y=fft(x); F=y(1:N/2+1); f=fs*(0:N/2)/N;
subplot(311); plot(t,x); subplot(312);plot(f,abs(F))
subplot(313);plot(f,phase(F)*180/pi)
谢谢改正!
做出来的图,总觉得它们的纵坐标有问题
[ 本帖最后由 ChaChing 于 2010-6-25 21:14 编辑 ] 有什么问题? 第一图是用origin软件,进行快速傅里叶变化得到的图,第二图是用matlab进行FFT变换得到的图,两幅图的纵坐标不一样,是不是上面编写的matlab程序有问题?
还有一个问题就是:matlab的FFT能处理这个衰减振荡信号吗? 个人水平专业有限, 仅几点意见参考下!
1.仅取2048点是前2048点, 还是后2048点
2.幅值改为F=y(1:N/2+1)*2/N;
3.origin软件所用参数相同吗?
4.基本上, 个人以为fft不适宜处理这个衰减振荡信号, 但不同工具的结果应不至于相差太大 取的是前2048个点,幅值改为F=y(1:N/2+1)/N会不会好点?
相频特性的纵坐标还是不对,不是在-180~180内变化,需要怎么在程序中修改?
把plot(f,phase(F)*180/pi) 改成plot(f,angle(F)*180/pi) 好像对了,楼上的帮我分析下对吗?
[ 本帖最后由 ChaChing 于 2010-7-1 00:52 编辑 ] 个人知道的幅值是F=y(1:N/2+1)*2/N;
在-180~180内变化, 的确应该使用angle
个人水平专业有限, 看看高手们的帖
[原创]关于FFT结果为什么要除以N (5F)
http://forum.vibunion.com/forum/viewthread.php?tid=23665
FFT求频谱和相位的问题
http://forum.vibunion.com/forum/viewthread.php?tid=52269 本帖最后由 ChaChing 于 2010-9-4 22:32 编辑
我把程序改成:
clear
x=xlsread('D:\sensor.xls'); %数据我放在excel里了,只取了前2048个
N=length(x); fs=25000; t=(0:N-1)/fs;
y=fft(x); F=y(1:N/2+1)*2/N; f=fs*(0:N/2)/N;
subplot(311); plot(t,x);
subplot(312); plot(f,abs(F))
subplot(313); plot(f,angle(F)*180/pi)
好像对了,谢谢楼上的ChaChing这几天的帮助,受益匪浅。 这个个人懂的不多, 没帮什么忙, 共同学习吧! LZ还在不,我也有一组时域衰减数据,要画出幅频曲线,你能把你的代码给我注释下吗,有些看不懂,谢谢 顶,支持,学习学习{:{46}:} {:{39}:},还不错
页:
[1]
2