常用小技巧:
想知道哪些可用的函数,输入h = plot(...),不加分号即可打印出句柄的属性
可以使用交互界面配合代码,例如在交互界面移动栏目获取坐标值,然后在代码中固定坐标值
plot(Y)
:若Y是向量,则图像横轴为序号,纵轴为Y值;若Y为矩阵,则绘制 Y 中各列对其行号的图(多条曲线),横轴的刻度范围是从 1 到 Y的行数。
plot(X, Y)
:X, Y可以是向量(要求长度相同),可以是矩阵,也可以一个是向量一个是矩阵
plot(X1,Y1,...,Xn,Yn)
绘制多个 X、Y 对组的图,所有线条都使用相同的坐标区
fplot(func)
,函数func可以是公用函数名(.m文件名内单独的函数),也可以是私密函数名(脚本后面的函数),也可以是直接的函数表达式
fplot(func, lims)
,其中lims限定自变量范围,lims=[XMIN XMAX YMIN YMAX]
或 [XMIN XMAX]
fplot(符号表达式1, 符号表达式2, lims)
:新版本中fplot用于替代ezplot的画参数方程功能
注意:函数表达式要么必须定义符号变量,要么必须用匿名函数的形式加@;fimplicit中同理,也要注意
例:
fplot(@(t) 10*sin(t),@(t) 10*cos(t),[0,2*pi])
% 或
syms t
fplot(10*sin(t), 10*cos(t),[0,2*pi])
fimplicit(f)
:在默认区间 [-5 5](对于 x 和 y)上绘制 f(x,y) = 0定义的隐函数
fimplicit(f,lims)
fimplicit(___,LineSpec)
fimplicit(___,Name,Value)
例:
h = fimplicit(@(x,y) y.*sin(x) + x.*cos(y) - 1);
h.Color = 'r';
h.LineStyle = '--';
h.LineWidth = 2;
ezplot会逐渐被fimplicit和flot函数代替
函数fimplicit代替了ezplot画隐函数曲线的功能;fplot代替画参数方程的功能(虽然官网上只说了被fplot代替,没说fimplicit)
注意fplot仅支持一个变量,无法用于画隐函数曲线
subplot(2,3,6) % 将多个图画到一张图上
plot(x2,y2)
% 用句柄进行画图操作,就不用在plot里添加一堆属性了:
h = plot(x,y);
h.LineWidth = 2; % 改变线宽
h.FontSize = 12 % 改变字体大小
title('线性电阻的伏安特性曲线') % 添加图表标题
text(0.8,200,'R1=9.99Ω') % 添加标注
text(5,50,'R2=1022Ω')
legend('10Ω','1kΩ'); % 添加图例
% 坐标轴 %
xlabel('电压U/V'); % 添加x轴名称
ylabel('电流I/mA');
xlim([2, 46]); % 设定x轴的绘制范围
set(gca,'XTick',[2:2:46]) % 改变x轴坐标间隔显示 这里间隔为2
set(gca,'FontSize',20); % 设置坐标轴的数字大小,包括legend文字大小:
axis equal % 坐标轴相等,长方形变正方形
axis off % 隐藏坐标轴
%在图中标出每一点纵坐标
for i=1:8
text(x(1,i),y(1,i),num2str(y(1,i)));% num2str表示数字到字符的转换
end
%任意位置四舍五入
a=roundn(a,-4) % 保留四位小数
color bar % 添加颜色bar
h.AlphaData = .5; % 利用句柄改变图像透明度
fg1 = figure('numbertitle','off','name','自定义文件名');
注:如果subplot的话,无法画大标题
句柄 | 说明 |
---|---|
gcf() | 返回当前图形对象的句柄值,get current figure,通常不用 |
gca() | 返回当前坐标轴对象的句柄值,get current axis |
imagesc(A)
将数组 A
中的数据显示为一个图像,该图像使用颜色图中的全部颜色。A
的每个元素指定图像的一个像素的颜色。生成的图像是一个 m
×n
像素网格,其中 m
和 n
分别是 A
中的行数和列数。这些元素的行索引和列索引确定了对应像素的中心
简单的说,就是显示RGB图像:一个数值对应一个颜色块,数值越相近颜色则越相近,数值相同则颜色相同
% 例子:研究9~24阶幻方矩阵的分布情况
for n = 1:16
subplot(4,4,n)
ord = n+8;
m = magic(ord); % 幻方矩阵
imagesc(m)
title(num2str(ord))
axis equal
axis off
color bar
end
应用:作热力图、等高线;向三维视图中的坐标区添加图像
Z = 10 + peaks; % 向上平移10,以便画xy平面上的图像
surf(Z)
hold on
imagesc(Z)
gscatter(x, y, group)
按分组绘制散点图
gscatter(x, y, group, clr, sym, siz)
为每组设置颜色clr,符号sym和大小siz
例:
A=magic(6);
group=[1,2,3,3,2,3];
gscatter(A(:,1),A(:,2),group);
% 此处magic为神奇的幻方矩阵,虽然是6x6,但此处只用到了其第一列与第二列,以第一列为x,第二列为y,进行对应的group分组
教程:官网较全的总结,这里选取部分常用的
xtickangle(ax, angle)
设置x轴刻度转过的角度,避免重叠
xtickformat(ax, format)
将x轴刻度按规定格式显示
标识符 | 说明 | 显示结果 |
---|---|---|
d或i | 底数为10的有符号整数,精度指示有效位数 | '%.4d' 0003 |
f | 定点计数法,精度指示小数位数 | '%.4f' 3.1416 |
e | 指数计数法,精度指示小数位数 | '%.4e' 3.1416×10 |
g | 不带尾随零,精度指示最大小数位数 | '%.4g' 3.1416 |
xticks(x)
显示数组x处的刻度值
xticklabels({'','',''})
将x轴刻度值显示为{'...','...','...'}
xlim([2, 46])
设定x轴的绘制范围
set(gca,'XTick',[2:2:46])
改变x轴坐标间隔显示 这里间隔为2
set(gca,'FontSize',20)
设置坐标轴的数字大小,包括legend文字大小
教程:轩轩的CSDN
(见教程)
教程:较全的总结
surf(x, y, z)
x = 1:100; % 1x100矩阵
y = 101:200; % 1x100矩阵
z = x'*y % 100x100矩阵
surf(x, y, z);
surf(z)
:若z=mxn,则默认x=0:m, y=0:n
mesh(x,y,z)
①~③三者对比
t=-2:0.1:2;
s=-1:0.1:3
[x,y]=meshgrid(t,s);
z=x.*exp(-x.^2-y.^2);
subplot(1,3,1);
plot3(x,y,z);
title('三维曲线');
subplot(1,3,2);
mesh(x,y,z);
title('mesh');
subplot(1,3,3);
surf(x,y,z);
title('surf');
fsurf(x,y,z,[umin,umax,vmin,vmax]);
这两个函数就是用来绘制参数方程定义的三维曲面,和fplot3函数很像,需要用到函数句柄
例:作三维螺旋曲面
x=@(u,v) u*sin(v);
y=@(u,v) -u*cos(v);
z=@(u,v) v;
fsurf(x,y,z,[-5,5,-2,2]);
grid on;
title('螺旋曲面');
xlabel('x=usinv');
ylabel('y=-ucosv');
zlabel('z=v');
[X,Y] = meshgrid(x,y)
:根据向量x,y创建网格矩阵X,Y
这样子就可以直接用函数的形式,用自变量XY表示因变量Z了
x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)
Z = X.^2 + Y.^2
X = 5×3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
Y = 5×3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
Z = 5×3
2 5 10
5 8 13
10 13 18
17 20 25
26 29 34
peaks 函数是一个典型的多元函数,本质上是一个二元高斯分布的概率密度函数,表达式如下:
blockformula_editorf(x,y)=3(1−x)^2e^{−x^2−(y+1)^2}−10(\frac{1}{5}x−x^3−y^5)e^{−x^2−y^2}−\frac{1}{3}e^{−(x+1)^2−y^2}
z = peaks
:生成49x49的矩阵,默认x,y=0:49
z = peaks(n)
:生成nxn的矩阵,默认x,y=0:n
peaks(n)
:没有输出参数z
时,这个函数可以直接进行绘制peaks,默认n为49
clc;clear;close all; % 1,1~5,5
figure(1);
z=peaks(5);
surf(z);
figure(2); % -3,-3~3,3
peaks(5);%没有输出值的peaks函数直接绘制表面图
[x,y,z]=peaks(5); % -3,-3~3,3
figure(3);
surf(x,y,z);%注意图像2和图像3坐标的差异性,相当于平移了
view可以改变对三维视图的视角
view(3)
:恢复默认的三视图视角
view(ez,el)
:设置方位角为ez,俯角为el:[0,0]为正视图,[90,0]为侧视图,[0,90]为俯视图
教程:轩轩的CSDN
用于修改色轴,即修改图形的颜色
调整色轴明度
设置函数值映射到色轴两端的最大值与最小值,一般默认
显示颜色条,分横条与竖条两种
可以调整曲面透明度、网线颜色,作热力图等
本文章使用limfx的vscode插件快速发布