利用MATLAB绘制相轨迹

利用MATLAB绘制相轨迹

    不直接用时间变量而用状态变量表示运动的方法称为相空间方法,也称为状态空间方法。在自动控制理论中,把具有直角坐标x和x'的平面叫做相平面。相平面是二维的状态空间,二阶系统的某一状态对应于相平面上的一点,状态随时间转移的情况对应于相平面上点的移动。相平面上的点随时间变化描绘出来的曲线叫做相轨迹。相轨迹作为研究二阶非线性系统的方法之一,传统绘制方法包括解析法等倾线法。现在,我们研究如何利用Simulink的仿真功能绘制一个二阶系统的相轨迹。

1、MATALB版本

    博主的MATLAB版本是R2016a。

2、基本思想

(1)相变量的实现:利用积分器(integrator)获得相变量(x,x')


(2)设置初始值:双击打开积分器模块的参数对话框,在Initial condition source中选择为internal,在Initial condition里输入初始值。当然,也可以选择external来设置,然后在外面选择信号源。但是博主要画的比较简单,没有必要~


(3)系统的连接:根据实际情况连接就可以啦;如果想要数据的话也可以设置Simulink里面输出数组。以下分别在解析式已知和解析式未知的情况下举几个具体的例子。

3、应用举例

(1)解析式已知(为了简便与验证,我们先画线性系统的相轨迹)

    1)x''+x=0(无阻尼运动)

    这是一个无阻尼运动的方程,它的相轨迹应该是一个椭圆。现在我们就要看一看我们的猜想对不对啦~初始条件不是十分的重要,我们就认为x'(0)=1,x(0)=1就行。

    首先变换一下方程:x''=-x

    然后连接好结构图:


    之后插入一个示波器来观察x与x'的变化曲线啦,以x为x轴,以x'为y轴就行~


    别忘了如果需要的话应当在Simulation中的Model Configuration Parameters中进行一些必要的设置哦。之后就可以Run啦~开心


    真的是椭圆耶,真的真的是椭圆耶!

    验证完成,我们下面尝试画一些解析式未知的非线性系统的相轨迹。

    2)解析式未知

    

    如上图系统,已知c(0)=-3,c'(0)=0,求系统相轨迹。

    连接如下图:


    可以看到,关键是对于传递函数环节做出一些变动,使我们可以对于初值进行调整。但是问题自然的提出,就是如果传递函数分子分母是同次或仅高一次,那么该如何处理呢?这个问题在这里提出,以后有空想想QAQ

    仿真结果如下:


    这个结果仅检验是正确的,也就是说以上的处理是合理的。

以上就是关于利用Simulink进行相轨迹画图的全部内容。希望看到的人能解答一下文中提出的问题,或者提供一点想法也行啊QAQ

4、参考文献

    《自动控制原理》程鹏主编,高等教育出版社

  • 14
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
MATLAB是一种强大的数学软件,常用于数值计算、数据可视化以及工程应用。如果你想在MATLAB绘制复数函数的轨迹,可以按照以下步骤操作: 1. **定义复数函数**:首先,确定你要研究的复数函数,例如 `z = f(a+bi)`,其中 `f` 是你感兴趣的函数,`a` 和 `b` 分别代表实部和虚部。 2. **创建复平面网格**:使用 `meshgrid` 函数生成实部 `a` 和虚部 `b` 的网格,通常范围可以设定为 `-5:0.1:5` 和 `-5:0.1:5` 或者自定义。 3. **计算每个点的值**:对于网格中的每一个 `(a, b)` 对,计算对应的 `z` 值。例如,如果你的函数是 `z = a + bi`, 则直接将 `a` 和 `b` 加。 4. **绘制轨迹**:使用 `surf` 或 `quiver` 函数绘制轨迹。如果 `surf` 能展示出表面更好理解,而 `quiver` 可能更适合显示向量方向。传递 `a`、`b` 和 `real(z)` 或 `imag(z)` 数组作为输入。 5. **调整像**:添加标题、坐标轴标签,并可能调整颜色、线型等属性,使像更易读。 6. **保存或显示结果**:最后,你可以选择使用 `saveas` 保存片,或者直接使用 `imshow` 显示在当前形窗口。 ```matlab % 示例代码 a = -5:0.1:5; b = -5:0.1:5; [Re, Im] = meshgrid(a, b); Z = Re + 1i*Im; % 假设你的函数是 z = a + bi surf(Re, Im, angle(Z)) % 使用 surf 绘制,angle() 计算复数的幅角 xlabel('实部'); ylabel('虚部'); title('复数函数轨迹'); % 如果你想要显示向量方向,可以用 quiver % quiver(Re, Im, real(Z), imag(Z)); ```
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值