MATLAB绘图总结(2)

  1. 遍历矩阵画图

通常采用MATLAB做数据分析,将导入的数据进行处理。而导入的数据形式为矩阵,采用size函数获取矩阵大小。

size(p,1);  %查阅矩阵的行数 p为导入的数据
size(p,2);  %矩阵的列数

1.1 创建矩阵

p1 = [-0.0039,0.0001,-0.0011,0.5123,0.0951,0.6136,0.0014,0.0012,-0.0067 ];
p2 = [1 2 3 4 5 6 7 3 3];
p = [p1;p2];
a = [];
m = size(p,2); %获取总列数,便于将矩阵整理成一维

1.2 遍历矩阵,合成一维形式

for i = 1:1:size(p,1)  %先遍历矩阵的第一行,再遍历第二行,并输出
    for j = 1:1:size(p,2)
%           disp(p(i,j));
          a(j+m*(i-1)) = p(i,j);
    end
end

1.3 画图

由于title函数中不能包含变量,所以采用字符串拼接形式,设置循环标题。后期针对单个子图,采用总结(1)的方法可以修改图中样式。

pp1 = [p1,zeros(1,9)]; %改变矩阵形式
pp2 = [p2,zeros(1,9)];

all_p = [pp1;pp2;a]; % 合并矩阵

figure(2)
for ii = 1:1:size(all_p,1)
    subplot(2,2,ii)
    plot(all_p(ii,:));
    xlabel(['\fontname{宋体}迭代次数'],'FontSize',12); 
    ylabel(['\fontname{宋体}适应度值'],'FontSize',12);
    
    titleName = strcat('第',num2str(ii),'个适应度函数曲线');
%     title(['\fontname{宋体}titleName'],'FontSize',12); %错误
    title(titleName,FontName='宋体',FontSize=12);
end

  1. 读取Simulink数据

2.1 Simulink与MATLAB

之间通过workspace交互数据,具体步骤如下:

运行Simulink程序后,在工作区可以看到多了out的变量:

采用代码进行数据提取

pos = out.position.signals.values;
time = out.position.time;

2.2 画图

采用下面代码可以对数据进行复现

color = ['b','g','r','c','m','k']; %颜色简写
figure(3)
for ii = 1:1:size(pos,2)
    subplot(2,3,ii)
    plot(time,pos(:,ii),color(ii));
    xlabel(['\fontname{宋体}时间...
\fontname{Times new roman}(t/s)'],'FontSize',12); 
    ylabel(['\fontname{宋体}...
关节位置\fontname{Times new roman}(rad)'],'FontSize',12);
    
    titleName = strcat('关节',num2str(ii));
    title(titleName,FontName='宋体',...
FontSize=12);
    grid on %打开网格
end

注释:此时采用总结(1)中的句柄获取的是其中的一个子图。

2.3 保存Simulink截图

方法(1):利用saveas函数进行保存

saveas(get_param('模型名字', 'Handle'), '保存图片名字', 'png')
% 保存在模型所在的路径下面

方法(2):打印功能

注:打印之前可以选择模型铺满,然后打印。

  1. 其它

三维图方面没有涉及。

%% Matlab的三维图与二维图之间的转换

view(2);  %%默认的二维视角
view(3);  %%默认的三维视角

view(AZ,EL); 
view(0,90);  %%在xoy平面的投影
view(90,0);  %%在yoz平面的投影
view(0,0);    %%在xoz平面的投影

关于MATLAB的机器人工具箱方面有所接触,有需要可以评论区留言,共同学习进步。

plot3d
%%属性
'path' : 包含stl模型文件的文件夹路径
'workspace' : 机器人三维工作空间的大小 xx.plot3d('workspace',w)
       w = [xmn,xmx,ymn,ymx,zmn,zmx]
'view',v  : 为侧视图指定视角
'tilesize' :  地板上方形瓷砖的边长(默认为0.2) 

'tile1color',c : 偶数瓷砖的颜色[r g b](默认[0.5 1 0.5]浅绿色)
'tile2color'.c : 奇数瓷砖的颜色[r g b](默认[1 1 1]白色)

'alpha',A : 为所有的连接设置;0是透明的,1是不透明的,默认是1

'nowrist' : 启用手腕坐标框的显示
'delay',D : 动画帧间延迟

%%light
%使用光线方向为向量[-1 0 0]所定义方向(即沿x正轴从0起)的局部光源照亮曲面图peaks
surf(peaks,'FaceLighting','gouraud','FaceColor','interp',...'AmbientStrength',0.5);
light('Position',[-1 0 0],'Style','local')

%%patch函数
%创建一个或多个填充多边形
patch(X,Y,C);  %X,Y作为填充多边形的每个顶点的坐标,C决定多边形的颜色
%注意,C的不同取法会出现不同的颜色效果
%C为字符串:'r \ g \ b \ c \m \ y \ w \ k\
%C为三元数组,RGB颜色

patch(X,Y,Z,C); %使用X Y Z创建多边形,C为颜色
patch('XData',X,'YData',Y) 
patch('Faces',F,'Vertics',V); %创建多边形V为顶点值,F为要连接的顶点

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值