基本的绘图流程:
(1)数据准备。
(2)设置当前绘图区。
(3)绘图。
(4)设置图形中曲线和标记点格式。
(5)设置坐标轴和网格线属性。
(6)标注图形。
(7)保存和导出图形。
1.plot()函数:
- plot(y) : 以y为实数数组,以y的每列元素为纵坐标,y的指数为横坐标绘制图形。
- plot(x1,y1,x2,y2,…) : 以xn为横坐标对应yn为纵坐标绘制多条曲线。
- plot(x1,y1,LineSpec,x2,y2,LineSpec,…) : 以对应的线型属性LineSpec绘制图形,其中包括线的类型(line style),标记点符号(marker symbol),图形线条的颜色等 。
其线型属性可以组合,如:'red-.hexagram’表示:绘制红色的点画线,且每个转折点上用六角星表示。
- plot(…,‘propertyName’,propertyValue,…) : 绘制图形的同时对所有线条图形的线宽,标记点大小,标记点边框颜色和标记点填充颜色等设置。
例1:绘制出方程y=tan(sin x)−sin(tan x)在x∈[−π,π]区间内的曲线。
x=-pi:pi/10:pi; %以pi/10为步长
y=tan(sin(x))-sin(tan(x)); %求出各点上的函数值
plot(x,y,'--rs',... %绘制红色的虚线,且每个转折点上用正方形表示。
'LineWidth',2,... % 设置线宽为2
'MarkerEdgeColor','k',...% 设置标记点边框线条颜色为黑色
'MarkerFaceColor','g',...% 设置标记点内部填充颜色为绿色
'MarkerSize',10) %设置标记点大小为10
对应Figure为:
注意:plot函数只将给定点用直线连起来,因此,步长选的过大,曲线将看似一条折线。
例2:用不同的线型和颜色在同一坐标内绘制曲线y=2e^{-0.5x}sin(2pi*x)及其包络线。MATLAB程序如下:
x=[0:pi/100:2*pi]; %数据准备
y1=2*exp(-0.5*x);
y2=2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y1,'k:',x,-y1,'k:',x,y2,'b--') %y1和-y1为包络线
%将y1和-y1设置为黑色点线,y2设置为蓝色虚线
2.1 axis函数
- axis[xmin xmax ymin ymax] : 对当前二维图形对象的x轴和y轴进行设置,其中x轴的刻度范围为[xmin xmax], y轴的刻度范围为[ymin ymax]。
- axis off : 把坐标轴,刻度,标注和说明变为不显示状态。
- axis on : 把坐标轴,刻度,标注和说明变为显示状态。
- axis manual : 冻结当前的坐标轴比例,以后添加绘图都在当前坐标轴范围内显示。
- axis auto : 恢复系统的自动定比例功能。
- axis equal : 等比例坐标轴。
- axis nomal : 自动调整纵横轴比例,使当前坐标轴范围内的图形显示达到最佳效果。
- axis square : 以当前坐标轴范围为基础,将坐标轴区域调整为方格形。
例:绘制单位圆
clear ;close all; clc
t=[0:0.01:2*pi]; %定义时间范围
x=sin(t);
y=cos(t);
plot(x,y)
axis([-1.5 1.5 -1.5 1.5]) %限定X轴和Y轴的显示范围
grid on
axis('equal')
- set(gca,‘xtick’,标识向量):x坐标轴刻度数据点位置
- set(gca,‘xticklabel’,‘字符串|字符串’):x坐标轴刻度处显示的字符。
- set(gca,‘FontName’,‘Times New Roman’,‘FontSize’,14):设置坐标轴字体名称和大小。
注意:gca是坐标轴的handle,即标识辨识码
例:
t=0:0.05:7;
plot(t,sin(t))
set(gca,'xtick',[0 1.4 3.14 5 6.28])
set(gca,'xticklabel','0|1.4|half|5|one')
- title(‘String’) :在坐标系的顶部添加一个文本串String,作为图形的标题。
- xlabel(‘String’),ylabel(‘String’):采用字符串给x轴,y轴标注。
- text(x,y,‘string’):在二维图形(x,y)位置处标注文本注释’string’。
- gtext(‘string’):拖动鼠标确定文字’string’的位置,再单击鼠标左键。
例:绘制分段函数,并添加图形标注
clc
close all
clear
x=0:0.05:10; %数据准备
y=zeros(1,length(x));%生成一个1行length(x)列的矩阵。
for n=1:length(x)
if x(n)>=8
y(n)=1;
elseif x(n)>=6
y(n)=5-x(n)/2
elseif x(n)>=4
y(n)=2
else
y(n)=sqrt(x(n))
end
end
plot(x,y)%画出图形
axis([0 10 0 2.5]) %设置坐标轴的范围
title('分段函数曲线'); %添加图形标题
xlabel('x') %给x轴标注
ylabel('y') %给y轴标注
text(2,1.3, 'y=x^{1/2}'); %在(2,1.3)处添加文本注释
text(4.5,1.9, 'y=2'); %在(4.5,1.9)处添加文本注释
text(7.3,1.5, 'y=5-x/2');
text(8.5,0.9, 'y=1');
- figure,:打开不同的图形窗,以绘制不同的图形。
- grid on:对当前坐标轴添加网格。
- hold on:保持当前图形窗口内容命令,防止图形被下个图形覆盖。
例:分别绘制正余弦曲线,并绘制标题,添加或删去网格。
close all
clc
clear
t=[0:pi/20:9*pi]; %定义时间范围
figure(1) %建立图形窗口1
plot(t,sin(t),'r:*') %以红色的点绘制正弦函数图形,图形的标识符为星
grid on %在所画出的图形坐标中添加栅格,注意用在plot之后
text(pi,0,' \leftarrow sin(\pi)','FontSize',18) %在(pi,0)处添加左箭头和sin(pi)文本标识,字体大小为18
title('添加栅格的正弦曲线')%添加图形标题
xlabel('x') %添加x坐标轴标识
ylabel('sint') %添加y坐标轴标识
figure(2) %建立图形窗口2
plot(t,cos(t)) %绘制余弦函数图形
grid on %打开网格
pause %暂停
grid off %删除栅格
text(pi,0,' \leftarrow cos(\pi)','FontSize',18) %添加文本标识
title('去除栅格的余弦曲线') %添加图形标题
xlabel('x') %添加x坐标轴标识
ylabel('cost') %添加y坐标轴标识
- lenged(‘String1’,‘String2’,…):在当前图形中添加图例。
- lenged(…,pos):由pos确定图例标注位置。
pos = 0 表示放置图例在轴边界内;
pos = 1 表示放置图例在轴边界内右上角(为默认设置);
pos = 2表示放置图例在轴边界内左上角;
pos = 3表示放置图例在轴边界内左下角;
pos = 4表示放置图例在轴边界内右下角。
例:给正余弦函数添加图例
x=-pi:pi/20:pi;
plot(x,cos(x),'-ro',x,sin(x),'-.b')
h=legend('cos','sin',2);
对应Figure为:
4. 函数绘图命令和分割图形显示窗口命令
- fplot(‘funtion’,limits):绘制函数曲线在一个指定范围内,limits可以为[xmin xmax]或者[xmin xmax ymin ymax]
- subplot(m,n,p):将一个图形窗口分成mxn个子窗口,从左往右,从上往下第p个子图形窗口。
例:
subplot(2,2,1),fplot('humps',[0 1])
subplot(2,2,2)
fplot('abs(exp(-j∗x∗(0:9))∗ones(10,1))',[0 2∗pi])
subplot(2,2,3)
fplot('[tan(x),sin(x),cos(x)]',2∗pi∗[-1 1 -1 1])
subplot(2,2,4)
fplot('sin(1./x)',[0.01 0.1],1e-3)
对应Figure为:
5.函数ezplot
无需数据准备,可以直接画出函数的图形,可用于显函数,隐函数,参数方程作图。
- ezplot(f):f是关于x的函数(-2pi
pi)
- ezplot(f(x,y)):f(x,y) = 0,隐函数,(-2pi
pi,-2pi pi)
例:
syms x y
ezplot('x^3+y^3-3*x*y')
grid on
- eaplot(f,[A B])f是关于x的函数(A
- ezplot(f(x,y):[XMIN,XMAX,YMIN,YMAX]):f(x,y)=0,隐函数
例:ezplot(‘x3+y3-3xy’,[-9,9,-6,6])
- ezplot(f1,f2):画关于变量T的参数方程(0
syms t
ezplot(3*sin(t),3*cos(t))
- ezplot(f1,f2,[TMIN,TMAX])(TMIN
例:ezplot(3sin(t),3cos(t),[-2,2])
6.函数solve
solve()用来求解代数方程的解析解或者精确解
syms a u v;
A = solve(‘a*u^2 + v^2′, ‘u – v = 1′, ‘a^2 – 5*a + 6′)
求解结果为
A = a: [4x1 sym]
u: [4x1 sym]
v: [4x1 sym]
对于查看具体的数值可以通过
Aa = A.a
Au = A.u
Av = A.v