首页/文章/ 详情

dymola导出可应用于matlab中的*.mat 文件

9月前浏览13529

image.png

过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,**:927550334

QQ图片20210424105303.png

在dymola中,得到仿真结果后,由于dymola的图形界面不是那么的友好,绘图不够好看,需要将数据导出,用MATLAB绘图,并做数据分析。

image.png

 导出数据的方法通常有在Variable  Browser中选择仿真变量右击选择Export Result,

image.png

其会弹出三种选项,All,Only Plot Window,Only Current Diagram。通常是没有必要选择All的,因为input_data这样类型的文件在仿真时,本身就会导出对应的.mat文件.过冷水在实践中也遇到过,由于原始的*.mat文件过大,Matlab中无法处理,需要放入dymola中做瘦身,过冷水最多的时候选择采用将要导出的变量进行绘图,然后使用Only Plot Window绘图将数据导出。

 导出文件为input_data_partial.mat。在matlab中将该文件进行读取。读取文件的代码为:

load('input_data_partial.mat')

matlab工作区中的文件即为input_data_partial.mat所包含的文件。过冷水比较困惑的是dynola在生成*.mat文件时的逻辑是什么。为什么是这样的格式。工作区的char文件格式都很奇怪,对于不熟悉matlab和char类型的使用者来说,是有一定难度的。Aclass,description,name的内容分别为:

image.png

image.png



   

字符串看起来很奇怪,这是因为字符串的显示有问题,对字符串做转置处理:

image.png


Data2是一个数组,观察即可知道是与name对应的数据。

image.png


我们为了让data2与name对应,可以创建一个结构体,具体代码为:

>> data_name=name;
[m,n]=size(data_name);
data_struct=struct('Time',data_2(1,:));
for i=2:m
    dataname=strrep(strrep(strrep(strrep(data_name(i,:),'.','_'),' ',''),'[','_'),']','');
    strname=regexprep(dataname,'\[^\]*\]|(_^\)_*\)','');
    datastruct.(strname)=data_2(i,:);
end

对应的结构体格式为:

image.png

这样我们就实现了将dymola中的数据导入到matlab。过冷水在实践中还发现如果Variable  Browser中有四十个变量需要导出为*.mat文件.我们还采用Only Plot Window效率就有点低了,我们可以采用脚本命令实现,具体的脚步命令为:

fileName="C:/Users/wayne/Desktop/input_data.mat";
names={"input_data.y[1]",
"input_data.y[2]",
"input_data.y[3]",
"input_data.y[4]",
"input_data.y[5]",
"input_data.y[6]"}
n=readTrajectorySize(fileName);
traj=readTrajectory(fileName,names,n);
traj_transposed=transpose(traj);
filepath="C:/Users/wayne/Desktop/input_data_partial1.mat";
writeTrajectory(filepath, names, traj_transposed);

 在matlab中打开input_data_partial1.mat文件

image.png

可以看出用脚本命令生成的*.mat文件内容简单,names也不需要转置,这样过冷水就给出了如何将dymola的simulation value如何放入matlab中处理,本文给出的两种方法基本上能满足大部分的数据导出需求。

matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

QQ图片20210424105303.png

未标题-7.gif

附件

50积分运行附件.zip
MATLABDYMOLA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-02-16
最近编辑:9月前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈