Matlab绘制不同阻尼下的系统响应

6 篇文章 0 订阅

基于Matlab的GUI设计不同阻尼的系统响应

h0=figure('toolbar','none',...    'position',[198 56 350 468],...    'name','test');h1=axes('parent',h0,...    'position',[0.25 0.45 0.5 0.5],...    'visible','off');str1='当前阻尼比=';z=0.52;t=0:0.1:10;y=step(1,[1 2*z 1],t);hline=plot(t,y);grid onr1=uicontrol('parent',h0,...    'units','points',...    'tag','r1',...    'style','radio',...    'string','grid on',...    'position',[30 120 60 20],...    'backgroundcolor',[0.75 0.75 0.75],...    'value',1,...    'callback',[...        'grid on,',...        'set(r1,''value'',1);,',...        'set(r2,''value'',0)']);r2=uicontrol('parent',h0,...    'units','points',...    'tag','r2',...    'style','radio',...    'string','grid on',...    'position',[30 95 60 20],...     'backgroundcolor',[0.75 0.75 0.75],...    'value',0,...    'callback',[...        'grid off,',...        'set(r2,''value'',1);,',...        'set(r1,''value'',0)']);s1=uicontrol('parent',h0,...    'units','points',...    'tag','s1',...    'style','slider',...    'value',z,...    'position',[100 95 150 20],...     'backgroundcolor',[0.75 0.75 0.75],...    'max',1,...    'min',0,...    'callback',[...        'z=get(s1,''value'');,',...        'set(t1,''string'',[str1,sprintf(''%1.4g\'',z)]);,',...        'delete(hline),',...        'y=step(1,[1 2*z 1],t);,',...        'hline=plot(t,y);,',...        'if get(r1,''value'')==1,',...        'grid on,',...        'end,',...        'if get(r2,''value'')==1,',...        'grid off,',...        'end']);t1=uicontrol('parent',h0,...    'units','points',...    'tag','t1',...    'style','text',...    'string',[str1,sprintf('%1.4g\',z)],...    'position',[100 120 150 20],...    'backgroundcolor',[0.75 0.75 0.75]);b1=uicontrol('parent',h0,...    'units','points',...    'tag','b1',...    'style','pushbutton',...    'string','关闭',...    'position',[80 50 80 30],...    'backgroundcolor',[0.75 0.75 0.75],...    'fontsize',15,...    'callback','close');

图片

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中可以使用`step`, `impulse`, `lsim`函数来绘制阻尼比不同取值下的单位阶跃、脉冲、斜坡响应曲线。具体步骤如下: 1. 定义系统传递函数: 假设系统的传递函数为: $$ G(s) = \frac{\omega_n^2}{s^2+2\zeta \omega_n s+\omega_n^2} $$ 其中,$\omega_n$为自然频率,$\zeta$为阻尼比。 2. 定义阻尼比不同取值: 我们可以定义一个阻尼比的向量,例如: ``` zeta = [0.1, 0.3, 0.5, 0.7, 0.9]; ``` 3. 绘制单位阶跃响应曲线: 使用`step`函数绘制单位阶跃响应曲线,代码如下: ``` for i=1:length(zeta) sys = tf([1], [1 2*zeta(i) 1]); step(sys); hold on; end legend('zeta=0.1', 'zeta=0.3', 'zeta=0.5', 'zeta=0.7', 'zeta=0.9'); ``` 其中,`tf([1], [1 2*zeta(i) 1])`表示创建一个传递函数,分子为1,分母为$s^2+2\zeta \omega_n s+\omega_n^2$。 4. 绘制脉冲响应曲线: 使用`impulse`函数绘制脉冲响应曲线,代码如下: ``` for i=1:length(zeta) sys = tf([1], [1 2*zeta(i) 1]); impulse(sys); hold on; end legend('zeta=0.1', 'zeta=0.3', 'zeta=0.5', 'zeta=0.7', 'zeta=0.9'); ``` 5. 绘制斜坡响应曲线: 使用`lsim`函数绘制斜坡响应曲线,代码如下: ``` t = linspace(0, 10, 1000); u = t; for i=1:length(zeta) sys = tf([1], [1 2*zeta(i) 1]); y = lsim(sys, u, t); plot(t, y); hold on; end legend('zeta=0.1', 'zeta=0.3', 'zeta=0.5', 'zeta=0.7', 'zeta=0.9'); ``` 其中,`lsim(sys, u, t)`表示计算系统对输入信号$u$在时间$t$下的响应绘制完成后,可以使用`legend`函数添加图例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值