许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  simulink数据导入matlab工作区并绘图操作

simulink数据导入matlab工作区并绘图操作

阅读数 4
点赞 0
article_banner


Undefined variable 'out' 弹出来的时候,模型明明跑完了,Scope 里波形也在,命令行敲 plot(out.yout) 直接报错。模型配置里 Simulation Output 那个勾没打上,sim 命令也没接返回值。改成 simOut = sim('model_name'); 然后 out = simOut; 工作区里就多一个 out 对象,后面所有提取都从它身上薅。D:\Simulink_work\model.slx 这个模型之前是手动点的运行,没走命令行,所以工作区里一直空着。

To Workspace 模块是另一条路,从 Simulink 库的 Sinks 里拖一个到信号线上,双击,Variable name 填 simout,Save format 选 Timeseries,Sample time 填 -1 表示继承,Limit data points to last 不勾,Decimation 给 1。仿真完工作区出现 simout,simout.Time 和 simout.Data 两个数组直接能读,plot(simout.Time, simout.Data) 就出图。Save format 选 Array 的话只有数据没有时间轴,采样时间自己乘序号,麻烦,Timeseries 最省事。路径 D:\Simulink_work\to_workspace.slx。

Scope 的数据导出来也能用,Scope 窗口里 Configuration Properties → Logging,勾上 Log data to workspace,Variable name 填 ScopeData,Save format 选 Dataset。仿真完工作区里 ScopeData 是个 Dataset,里面每个元素是 timeseries,ScopeData{1}.Time 和 ScopeData{1}.Data 就是第一条曲线,ScopeData{2} 是第二条,按信号顺序排。Dataset 的索引从 1 开始,不是 0,写 ScopeData{0} 直接报索引越界。

Signal logging 走 out.logsout,模型里选中信号线,右键 Properties → Log signal data,仿真完 out.logsout 也是 Dataset。按名字取:ts = out.logsout.get('theta').Values; 名字大小写敏感,'Theta' 和 'theta' 是两个东西。不想记名字就用 out.logsout.getElement(1).Values,按顺序拿。ts 是 timeseries,ts.Time 和 ts.Data 照常。out.yout 是输出端口的数据,结构跟 logsout 差不多,out.yout{1}.Values.Data 取第一个输出端口的数据,别直接 out.yout.Data,Dataset 不支持点操作。


画图的时候 figure 开新窗口,plot(t, y, 'LineWidth', 1.5),grid on,xlabel('Time (s)'),ylabel('Speed (rad/s)'),legend('实际转速','参考转速'),xlim([0 10]),saveas(gcf,'D:\Simulink_work\speed.png')。多曲线 hold on 之后接着 plot,颜色自动轮换。双纵轴 yyaxis left 和 yyaxis right,分别设 ylabel。子图 subplot(2,1,1) 和 subplot(2,1,2),位置参数别写反。数据点太多绘图卡,Decimation 设 10 或者 Limit data points 勾上给 5000,画出来一样看。

从 CSV 导数据进工作区也常用,data = readmatrix('D:\Simulink_work\out.csv'); t = data(:,1); y = data(:,2); plot(t,y)。readtable 出来的 table 用 data.Time 和 data.Speed 取列,列名带空格的话用 data.('Speed ref')。单位跟 Simulink 里一致,mm 和 s 别混,混了波形幅值差几个数量级,先看 csv 第一行有没有表头,readmatrix 不跳表头的话第一行变成 NaN,skiprows 或者 detectImportOptions 处理一下。

out.logsout 为空,模型配置 Data Import/Export 里 Signal logging 没勾,或者信号线上没开 Log signal data。out.yout 是 Dataset,out.yout.Data 报错,用 out.yout{1}.Values.Data。ScopeData 里 Time 不从 0 开始,Sample time 给了 offset,检查信号源的初始时间。D:\Simulink_work\plot_script.m 里那个 yyaxis 的右轴句柄还没……



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空