matlab用卷积积分求单自由度阻尼系统响应(零极点模型)

%spring1.m-用卷积积分求单自由度阻尼系统的强迫振动(先求系统的零极点模型)
m=1;c=4;K=100;dt=0.015;  %dt为卷积积分时的采样间隔
w0=sqrt(K/m);  %固有频率
zeta=c/sqrt(m*K)/2;  %固有阻尼系数
%系统方程为:y" + 2ζωn y' +ωn^2 y = δ(t)  单位脉冲输入δ(t)
%H(s)=Y(s)/F(s)=1/(s^2+2ζωn s+ωn^2)
%=r(1)/(s-p(1))+...   零极点模型

a=[1,2*zeta*w0,w0^2];b=1;  %分母分子的系数
[r,p]=residue(b,a);  %求极点、留数
t=0:dt:1.2;
h=r(1)*exp(p(1)*t)+r(2)*exp(p(2)*t);  %求脉冲响应
f=[1:10,10*ones(1,70)];  %给出外加力的采样值
%f=t/0.015 (0<=t<=0.15s); 10 (0.15
x=conv(h,f)*dt;  %把脉冲响应与外加力作卷积
v1=diff(x)/dt;  %求导得出速度,注意求导后数组长度少1
plot(t(1:80),x(1:80))
all=[t(1:80)',f(1:80)',x(1:80)',[0,v1(1:79)]'];
figure;
plot(t(1:80)',all)

你可能感兴趣的:(机械,matlab)