过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,**:927550334
过冷水在使用Dymola的过程中使用Sweep Parameters命令分析自变量和结果之间的关系,
点击Run Sweep后,运行,如果是一个自变量,一个因变量。就是简单的点线图。
如果是两个自变量。一个因变量,就是二维半平面图
如果是三个自变量及以上,就是矩阵散点图
其对应的矩阵散点的脚本程序为:
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中进行处理即可。
数据为四组二维数据,需要导入进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')
过冷水在使用过程中觉得plotmatrix函数不能做到赋予散点颜色,即用二维数据表示三维信息的能力。过冷水发现散点图可以用scatter函数绘制,且能赋予散点的含义,基本能够得到与Dymola的一样的图,于是改用scatter函数,自行设计矩阵散点图。
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读取存储各种文件的方法 文末有独家金曲分享