问题描述
在使用simulink做仿真时,常常需要将多种不同场景下的同种参数作比较,此时就需要使用to workspace模块将simulink中的数据导入工作区,但此时不管to workspace模块中设置以何种形式输出,最后得到的都会是一个三维矩阵,并且不能够通过plot函数直接绘制图像,本文将针对这一问题开展论述。
解决方案:
其核心是将已有的三维矩阵转成二维带时间的矩阵,主要步骤有三步。
第一步:取目标参数
与类的思想一致,可以通过名称索引直接获取目标参数,以加速度a为例
a = a.Data;
其后缀.Data为
第二步:测量目标参数长度
使用size函数,返回a数组的长度
size_a = size(a,3);
第三步:重构数组
通过reshape函数将获得的数据重构为一维数组
a = reshape(a,[size_a,1]);
由于相同的仿真时间不同的算法,获得的数据长度是不同的,但是我们又需要在相同的时间范围内比较,如果直接比较图像会按照点对点的形式对齐,最后图像长度不一,此时我们就可以依旧使用上述方法,将时间信息提取出来,用plot函数同对应的数据绘图,将两个不同的曲线放在同一个figure中就可以作比较了。
figure(1)
plot(t1, a1, 'r')
hold on
plot(t2, a2, 'g')
hold on