声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1160|回复: 4

[综合讨论] 得到系统的脉冲响应后,如何用fft变换求得其频响函数

[复制链接]
发表于 2008-4-18 21:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我已经用impulse函数得到单自由度系统的脉冲响应,按道理通过傅立叶变换可以求得其频响函数,可是出来的结果,与我自己用公式推导的结果不一样,是什么原因呢?

哪一位熟悉这个的可以附上来一段代码,来讨论一下错误出在哪里呢?

比如m=10, c=2.0, k=100, 很简单的系统,其频响函数为 H=1/(k-m*w^2+j*c*w)
然后我用impulse函数求得的脉冲响应进行fft变换,发现根本不一样,是怎么回事,如果高手能够给方法,不胜感激!

[ 本帖最后由 sigma665 于 2008-4-18 22:11 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-4-19 15:15 | 显示全部楼层
没有人来解答这个简单的问题么??
发表于 2008-4-19 18:08 | 显示全部楼层
想看一下你的impulse函数和fft函数在matlab中的具体形式,不知道你要验证这个东西干吗
 楼主| 发表于 2008-4-21 17:29 | 显示全部楼层
clear all
close all

m_real=10;
c_real=1;
k_real=1000;
Areal=[0  1;
             -k_real/m_real    -c_real/m_real];
Breal=[0;
             1/m_real];
Creal=[1 0];
Dreal=[0];
Preal=ss(Areal,Breal,Creal,Dreal);

t=0:0.01:20;
h=impulse(Preal,t);
figure
plot(t,h)

N=length(h);
H_fft=fft(h,N);
f=(0:N-1)/20;
figure
plot(f,abs(H_fft))

w=(0:0.05:100)*2*pi;
H_w=freqresp(Preal,w);
for ii=1:length(w)
H_omega(ii)=H_w(:,:,ii);
end
H_omega=H_omega.';
figure
plot(w/(2*pi),abs(H_omega))
 楼主| 发表于 2008-4-21 17:32 | 显示全部楼层
高手帮我看看吧,就是对应不起来啊,由FFT计算的H_fft和由freqresp计算的频率响应H_omega就是不一样啊!

还望gh688等网友帮个忙给看看怎么回事,多谢了!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 08:06 , Processed in 0.066628 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表