MATLAB中关于FFT的问题 100

小弟做毕业设计,最后一个步骤用MATLAB,但是我已经忘了怎么用。。。可以说完全不会啊!我现在有两个文件,两文件只有横纵坐标,点数相同,貌似要用FFT分析两组点出图的相似... 小弟做毕业设计,最后一个步骤用MATLAB,但是我已经忘了怎么用。。。可以说完全不会啊!
我现在有两个文件,两文件只有横纵坐标,点数相同,貌似要用FFT分析两组点出图的相似度,请问我该如何操作,或者看哪个教程上手快一点...我不需要懂MATLAB其他操作,只需要完成这一步就可以了...
展开
 我来答
wjshi09
2013-12-29 · TA获得超过184个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:207万
展开全部

现成的FFT程序网上可以下到很多,但如何定义相似度需要考虑一下。可以考虑用相对变化率的形式(相对变化率=(数值1-数值2)/数值1 或者 相对变化率=(数值1-数值2)/数值2 )。


有一种情况跟你的需求很像:设计滤波器后说明滤波效果。这种情况,需要比较变化前后的信号进行幅频特性、相频特性曲线,以此说明滤波效果。在这一过程中就需要对两个信号分别进行FFT变换,以求得幅频曲线和相频曲线。


具体过程如下:

step1:将横坐标定义为t(matlab赋值语句t=[*,*,*];),将纵坐标定义为y(matlab赋值语句y=[*,*,*];),采样频率就是临近两个横坐标差值的倒数(一般横坐标都应为时间);

step2:新建一个m文件(快捷键为ctrl+N);

step3:将如下程序复制到m文件中

    t=[*,*,*];%填入横轴数据

    y=[*,*,*];%填入纵轴数据


    N = size(t,2);%行向量时,列向量是为N = size(t,1);

    N = 2^(nextpow2(N)-1); 

    Y = fft(y,N);

    

    mag_Y = abs(Y)/N*2;%各个频率点处的幅值,这个就是fft变换后的数据

    f = fs/2*linspace(0,1,N/2+1);%对应的频率值

    plot(f,mag_Y(1:N/2+1))%显示变换后的曲线

step4:亲测实例

    t = 1:0.001:10;

    y= 2*sin(2*pi*100*t);%频率为100Hz

    %=================以下同step3中代码==============

    N = size(t,2);%行向量时,列向量是为N = size(t,1);

    N = 2^(nextpow2(N)-1); 

    Y = fft(y,N);

    

    mag_Y = abs(Y)/N*2;%各个频率点处的幅值,这个就是fft变换后的数据

    f = fs/2*linspace(0,1,N/2+1);%对应的频率值

    plot(f,mag_Y(1:N/2+1))%显示变换后的曲线    

    %=================以上同step3中代码==============

    结果:

由于matlab自带FFT函数有些小瑕疵,所以在100Hz处幅值虽然接近2,但还是有些偏差的,对于偏差的修正网上也有相应的方法,如果需要在留言。

135246kdb
2013-12-26 · TA获得超过1052个赞
知道答主
回答量:111
采纳率:0%
帮助的人:99.2万
展开全部
就是分别对两组数据做傅里叶变换,从频域上来分析他们的相似度(也就是看他们的频谱有什么差别)。你能把数据给我吗,我帮你看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式