马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 牛小贱 于 2014-3-31 22:59 编辑
用tfe函数求系统频率响应函数时,相频函数的误差要比幅频函数的误差大很多,大家讨论一下原因。注:tfe已被TFESTIMATE函数取代。
给定一个系统(传递函数),首先绘制幅频和相频函数;然后给系统一个脉冲输入,求得系统脉冲响应,再用tfe求系统幅频和相频函数;可以对比幅频函数和相频函数的误差。
程序
- N=4*400;
- fs=400;
- n=0:N-1;
- t=n/fs;
- x=zeros(1,N);
- x(101)=fs;
- x(102)=fs;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 生成脉冲输入信号
- b=[1];
- a=[1,100];
- w=linspace(0,200*2*pi,401);
- [mag,ph,w]=bode(b,a,w);
- w_hz=(w/(2*pi))';
- H_s = tf(b,a);
- y=lsim(H_s,x,t);
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 生成脉冲输出信号
- subplot(221);
- plot(w_hz,mag);
- title('幅频函数图');
- grid;
- subplot(222);
- plot(w_hz,ph);
- title('相频函数图');
- grid;
- N_fft=256;
- window=hanning(N_fft);
- noverlap=N_fft/2;
- dflag='none';
- [Txy,f]=tfe(x,y,N_fft,fs,window,noverlap,dflag);
- subplot(223);
- plot(f,abs(Txy));
- xlabel('Frequency / Hz')
- ylabel('Magnitude')
- title('幅频函数');
- grid;
- subplot(224);
- plot(f,angle(Txy)/pi*180);
- xlabel('Frequency / Hz')
- ylabel('Phase / Degree')
- title('相频函数');
- grid;
复制代码
|