Matlab 画图

                     

贡献者: addis

预备知识 Matlab 的函数

   Matlab 具有强大的画图功能,这里仅介绍一些基础知识。最常用的画图函数是 plot,例如

>> x = linspace(0, 2*pi, 100); y = sin(x);
>> plot(x, y);
结果如图 1 (左)所示。如果要在该坐标系继续画图,要用 hold on 命令(onhold 的输入变量),否则每用一次 plot,之前画过的图都会被清除。用 hold off 可以重新恢复自动清除。
>> y1 = cos(x);
>> hold on; plot(x, y1);
结果如图 1 (右)所示,注意新增曲线的颜色变化。

图
图 1:plot 函数

   如果我们要新建一个画图窗口,用 figure 函数。若要指定画图的颜色,可以添加 figure 的第三个变量,用一个字符表示颜色(red:'r',green:'g',blue:'b',yellow:'y',magenta:'m',cyan:'c',black:'k',white:'w')。例如

>> x2 = cos(x); y2 = sin(x);
>> figure; plot(x2, y2, 'r');
在新增的窗口中,结果如图 2 (左)所示。注意根据窗口尺寸的不同,$x$ 轴和 $y$ 轴的单位长度一般不同,若要使其相同,可以在 plot 后面用 axis equal 命令(其中字符串 equalaxis 函数的输入变量),得到图 2 (右)。

图
图 2:红色的单位圆

   若要调整坐标轴的范围,也可用 axis 函数。另外可以在 plot 的第三个变量的字符串中设定曲线的形状,用 xlabelylabel 函数分别设置 $x$ 轴和 $y$ 轴的文字,用 title 函数设置图片标题

>> plot(x2, y2, '.-r');
>> axis([-1.2, 1.2, -1.2, 1.2]);
>> xlabel('x'); ylabel('y'); title('unit circle');
其中 '.-' 表示带点的连线,点的坐标由 x2y2 决定(另外 '+-' 表示带加号的连线,'o-' 表示带圆圈的连线)。axis 中行矢量中的四个数分别是 $x$ 轴的最小最大值和 $y$ 轴的最小最大值。结果如图 3 (左)所示。

图
图 3:红色的单位圆

   要改变当前窗口中的字号,例如 set(gca, 'FontSize', 14);。其中 gca 获取当前坐标系的对象(get current axis),set 函数设置该对象的 FontSize 属性为 14。在画图窗口菜单中的 View -> Property Inspector 可以查看和修改一张图中任何对象的属性,包括画图窗口的大小和位置。

   除了 plot 以外,常用的还有 scatter 函数,用于画散点图。格式与 plot 相似。默认的散点形状是圆圈,但也可以在第三个变量中设置颜色和 '+''x''.' 等形状。例如

>> hold on; scatter(0, 0, 'b');
结果如图 3 (右)所示。

   如果直接通过菜单保存图片,会默认使用显示器的分辨率,要按指定的分辨率保存图片例如 exportgraphics(gcf, '文件名.png', 'Resolution', 300)。另外也可以用菜单或者 saveas() 保存为矢量图等格式。另外还有 print 函数也可以保存当前图片窗口:print('图片名', '-dpng', '-r300');

   最后,如果要关闭当前画图窗口,用 close 函数(无输入变量),如果要关闭所有窗口,用 close all 即可。

坐标显示

   可以用 axis 对象的 XTickXTickLabel 属性来设置坐标点和显示的文字,例如

figure; plot([1,2,3,2*pi],[1,2,3,5]);
set(gca,'XTick',0:pi/2:2*pi); % gca 用户获取当前的坐标轴对象
set(gca,'XTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'});

图
图 4:设置坐标点和显示文字

1. pdf 导出

   如果直接用 Figure 窗口中的另存为或者命令 saveas(),那么导出的 pdf 可能有非常宽的白边。这时可以通过 Figure 的 Paper* 属性来控制页面的大小以及 pdf 在页面上的位置。

figure;
plot(1:10, rand(1, 10));

% Set the desired paper size (in inches)
paperWidth = 6;
paperHeight = 4;
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [paperWidth paperHeight]);

% Set the position and size of the figure on the paper
left = 0.5; % left margin (in inches)
bottom = 0.5; % bottom margin (in inches)
width = paperWidth - 1; % width of the figure (in inches)
height = paperHeight - 1; % height of the figure (in inches)
set(gcf, 'PaperPosition', [left bottom width height]);

% Save the figure as a PDF
saveas(gcf, 'figure.pdf');


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利