function?f?=?hanning_imp(t,?Tc,?A)??
????f?=?zeros(size(t));??
????f(t?<?Tc )?=?A?/?2?*?(1?-?cos(2*pi?*?t(t?<?Tc)?/?Tc));??
end??
下面是计算单自由度系统响应的Matlab程序,计算传递函数,画实频、虚频、幅频、相位、导纳图
[plain]? \o "view plain" view plain? \o "copy" copy
m?=?100;??
k?=?1000;??
c?=?100;??
??
num?=?1;??
den?=?[m?c?k];??
sys?=?tf(num,?den);??
dt?=?0.00001;??
fs?=?1/dt;???%采样频率(Hz)?100Hz?实际并不需要这么高的采样频率,但是如果采样时间太小,hanning脉冲不完整??
%?为了得到准确的响应dt一定要小,否则做出的相位可能不对??
??
t?=?0:dt:200;??
Tc?=?0.001;??
A?=?10;??
u?=?hanning_imp(t,?Tc,?A);??
y?=?lsim(sys,?u,?t);??
%?y?=?impulse(sys,?t);??
y?=?y';??
??
N?=?length(u);??
fy?=?f