[Simulink] 采样点过多时导致XY Graphy 模块中图像消失的解决方法

  前言:在电机控制中,我们采用DTC控制方式时,希望我们得到的磁链为圆形或近似为圆形,一般情况下,在Simulink模型中我们会采用XY Graphy模块来显示磁链的轨迹,如图1所示。

图1 XY Graphy 模块

但在仿真时间较长,或仿真的点数较多的时候,XY Graphy 会出现一种奇怪的现象,即一方面显示后边的点,一方面前面已经显示的点会同时消失,这导致显示的圆并不能显示完全,如图2所示。

图2

然后组会上说,可以把点导入工作区,然后在工作区中用Plot 函数把采集到的点描出来。但是这就好比武侠小说中有人告诉你,你要去寻找天山雪莲,你要去寻找无根水,你要去寻找南海神尼一样,我在网上找了好久,也没有找到系统的解决方法,解决办法说的最多的就是说在XY Graphy的设置中(右键模块,找options选项),将Limit data points勾上,如图3所示。

图3

这一方法就好比告诉杨过“十六年后,在此相见”,最后换来的只能是无尽的孤独。这一方法最终也没将问题解决。因此我就开始在网上找,怎么把点导入工作区,怎么用Plot 画出来,最后还真如段誉一样,找到了两种绝技傍身。

法一:利用 Scope 模块-凌波微步

如图4所示,先拉出来一个Scope模块,模块设置为两栏。

图4

首先在Scope 模块中,View->Layout 中选择1*2,其次进入设置,如图5所示。

图5 

然后如图6所示,勾中 Log data to workspace,此时,仿真后的数据就会被存入到工作区中。

图6

其中的Variable name就是工作区中存放数据的名字。设置好以后,点仿真,运行模型。运行结束后,回到Matlab 的界面,不是Simulink的界面哦,如图7所示。会发现在右侧工作区中,出现了刚才存放数据的名字,我这里用“iaib”。

图7

再在命令行窗口中输入图示代码,如图8所示。

图8

点击回车,图形就出来了!

图9

代码解释:第一行,把iaib中的数据的第一组数据存入alpha,至于为什么是iaib.signals(1).values,这个可以双击工作区中的iaib->singals->表格中第一个数据,就看到了。然后用Plot 画出alpha和beta中的数据即可。

法二:利用 To File 模块-六脉神剑

具体模块位置见图10所示。

图10

连接方式见图11所示。

图11

然后双击模块,进行设置,如图12所示。

图12

其中File name 是模块的名字,Variable name 是在工作区中的名字,Save format选择Array数组。然后运行模型。

运行完毕后回到Matlab界面,会发现界面中出现了相关数据,如图13所示。

 图13

双击工作区中的fluxab,单击2,会发现第二行数据被选中,如图14所示。

图14

然后单击工具栏中->绘图->Plot,如图15所示。

 图15

此时会发现命令行窗口中出现语句,如图16所示。

图16

同样的操作,选中第3行的所有数据,然后 单击工具栏中->绘图->Plot,会发现命令行窗口出现语句,如图17所示。

图17

然后,再在命令行窗口中,写Plot函数,即plot(fluxab(2,:),fluxab(end,:));,再敲回车,图像就画出来啦。

这个函数的意思是 用Plot 函数,第一个参数用fluxab的第二行数据,第二个参数用fluxab的第三行数据 ,这里有一个问题,为什么不用第一行数据,因为第一行数据是时间轴,所以不用。

 

后记:我也是一个初学者,很多东西也不知道,很多东西理解的也很浅薄,这两类方法也远没有六脉神剑,凌波微步那么博大精深,若是这么做,能让枯燥的科研生活,能够多那么一丝丝的乐趣,就足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值