laoyun 发表于 2008-4-18 21:58

得到系统的脉冲响应后,如何用fft变换求得其频响函数

我已经用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 编辑 ]

laoyun 发表于 2008-4-19 15:15

没有人来解答这个简单的问题么??

gh688 发表于 2008-4-19 18:08

想看一下你的impulse函数和fft函数在matlab中的具体形式,不知道你要验证这个东西干吗

laoyun 发表于 2008-4-21 17:29

clear all
close all

m_real=10;
c_real=1;
k_real=1000;
Areal=[01;
             -k_real/m_real    -c_real/m_real];
Breal=[0;
             1/m_real];
Creal=;
Dreal=;
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))

laoyun 发表于 2008-4-21 17:32

高手帮我看看吧,就是对应不起来啊,由FFT计算的H_fft和由freqresp计算的频率响应H_omega就是不一样啊!

还望gh688等网友帮个忙给看看怎么回事,多谢了!!
页: [1]
查看完整版本: 得到系统的脉冲响应后,如何用fft变换求得其频响函数