首页/文章/ 详情

dymola与matlab生成矩阵散点图

2月前浏览3603

image.png

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

QQ图片20210424105303.png

过冷水在使用Dymola的过程中使用Sweep Parameters命令分析自变量和结果之间的关系,

image.png

点击Run Sweep后,运行,如果是一个自变量,一个因变量。就是简单的点线图。

image.png

如果是两个自变量。一个因变量,就是二维半平面图

image.png

如果是三个自变量及以上,就是矩阵散点图

image.png

其对应的矩阵散点的脚本程序为:

simulateModel("odelica.Mechanics.Rotational.Examples.CoupledClutches", stopTime=10, method="dassl", resultFile="CoupledClutches");
translateModel("Modelica.Mechanics.Rotational.Examples.CoupledClutches");
Design.Experimentation.sweepManyParametersScatter(
Design.Internal.Records.ModelDependencySetup(
Model="Modelica.Mechanics.Rotational.Examples.CoupledClutches",
dependencyParameters={Design.Internal.Records.DependencyParameter(
name="J1.J",
values=linspace(1, 5, 5),
unit="kg.m2",
displayUnit="kg.m2"),Design.Internal.Records.DependencyParameter(
name="J2.J",
values=linspace(1, 5, 5),
unit="kg.m2",
displayUnit="kg.m2"),Design.Internal.Records.DependencyParameter(
name="J3.J",
values=linspace(1, 5, 5),
unit="kg.m2",
displayUnit="kg.m2"),Design.Internal.Records.DependencyParameter(
name="J4.J",
values=linspace(1, 5, 5),
unit="kg.m2",
displayUnit="kg.m2")},
VariablesToPlot={Design.Internal.Records.VariableToPlot(
name="J4.w",
unit="rad/s",
displayUnit="rad/s")},
integrator=Design.Internal.Records.Integrator(
startTime=0,
stopTime=10,
numberOfIntervals=0,
outputInterval=0.001,
method="Dassl",
tolerance=0.0001,
fixedStepSize=0),
outputToCSV=true),
seedForPlotting=Design.Experimentation.RandomNumber.Functions.seed(
x=1,
y=1,
z=1));

过冷水之前一直做matlab的应用,于是就考虑该如何用matlab实现编程。首选我们需要将dymola中的数据导出。我们采取直接copy数据的方法,将数据导入matlab中.针对本案例虽然有16张图,可是只是由四个自变量,一个因变量组成。因此只需要复杂对角线上的数据,然后再放入matlab中进行处理即可。

image.png

image.png

数据为四组二维数据,需要导入进matlab中,然后再根据Y列进行排序,将四个组数据拼接为626*5的一个矩阵。矩阵散点图在matlab中可以使用plotmatrix函数绘图,

clear all
data=xlsread('Êý¾Ý.xlsx','Sheet2','A2:K626');
J1= sortrows(data(:,[1,2]),2,'descend'); 
J2= sortrows(data(:,[4,5]),2,'descend'); 
J3= sortrows(data(:,[7,8]),2,'descend') ;
J4= sortrows(data(:,[10,11]),2,'descend') ;
data_table= table(J1(:,1),J2(:,1),J3(:,1),J4(:,1),J4(:,2),'VariableNames',{'J1_J','J2_J','J3_J','J4_J','J4_w'});
figure
plotmatrix(data_table.Variables,'*r')

image.png

过冷水在使用过程中觉得plotmatrix函数不能做到赋予散点颜色,即用二维数据表示三维信息的能力。过冷水发现散点图可以用scatter函数绘制,且能赋予散点的含义,基本能够得到与Dymola的一样的图,于是改用scatter函数,自行设计矩阵散点图。

image.png

clear all
data=xlsread('Êý¾Ý.xlsx','Sheet2','A2:K626');
J1= sortrows(data(:,[1,2]),2,'descend'); 
J2= sortrows(data(:,[4,5]),2,'descend'); 
J3= sortrows(data(:,[7,8]),2,'descend') ;
J4= sortrows(data(:,[10,11]),2,'descend') ;
data_table= table(J1(:,1),J2(:,1),J3(:,1),J4(:,1),J4(:,2),'VariableNames',{'J1_J','J2_J','J3_J','J4_J','J4_w'});
figure
for i=1:4
    for j=1:4
        subplot1=subplot(4,4,(i-1)*4+j)
        if i==j
            scatter(data_table(:,i).Variables,data_table(:,5).Variables,20,data_table(:,5).Variables,'filled');  
            ylabel('J4_w','FontName','NewTime');
            xlabel(data_table.Properties.VariableNames(i),'FontName','NewTime');
        else
            scatter(data_table(:,j).Variables,data_table(:,i).Variables,20,data_table(:,5).Variables,'filled');
            ylabel(data_table.Properties.VariableNames(i),'FontName','NewTime');
            xlabel(data_table.Properties.VariableNames(j),'FontName','NewTime');
        end
        box('on')
    end
end

这样就实现了使用matlab绘制dymola中的矩阵散点图,这么做的好处是,因为Matlab的绘图功能比较强大,可以最大程度的自行设计样框格式,matlab更适合做数据分析,所以,将dymola的数据导入matlab中还是很有必要的。

matlab绘制农夫过河动态图

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

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

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

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

QQ图片20210424105303.png

未标题-7.gif

附件

50积分dymola与matlab绘制矩阵散点图.zip
STEPSMATLABUMDYMOLAModelica
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-02-16
最近编辑:2月前
过冷水
博士 | 讲师 讨论号:927550334
获赞 355粉丝 174文章 109课程 11
点赞
收藏

作者推荐

未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈