图图
xlable
使用字符向量元胞数组创建多行标签
fplot
fplot(@(x) sin(x))
xt = @(t) cos(3*t);
yt = @(t) sin(2*t);
fplot(xt,yt)
fplot(@(x) exp(x),[-3 0],'b')
hold on
fplot(@(x) cos(x),[0 3],'b')
hold off
grid on
指定线条属性
fplot(@(x) sin(x+pi/5),'Linewidth',2);
hold on
fplot(@(x) sin(x-pi/5),'--or');
fplot(@(x) sin(x),'-.*c')
hold off
fplot(@sin,[-2*pi 2*pi])
grid on
title('sin(x) from -2\pi to 2\pi')
xlabel('x');
ylabel('y');
fplot输入必须为一个或多个包含单个变量的函数,是符号函数就行,不一定非得句柄函数
线条格式
plot3
plot3(x1,y1,z1,x2,y2,z2……)
三维曲面网格图、三维曲面阴影图
mesh
ezplot绘制符号函数、隐函数
syms x
f1 = exp(2*x)*sin(2*x);
subplot(2,2,1),ezplot(exp(2*x),[-pi,pi]);
subplot(2,2,2),ezplot(sin(2*x));
subplot(2,2,3),ezplot(exp(2*x)+sin(2*x),[-pi,pi,0,2*pi]);
subplot(2,2,4),ezplot(f1,[-4*pi,4*pi]);
clc, clear
x0=[5.764 6.286 6.759 7.168 7.408]';
y0=[0.648 1.202 1.823 2.526 3.360]';
a=[x0.^2, x0.*y0, y0.^2, x0, y0];
b=-ones(5,1); c=a\b
fxy=@(x,y)c(1)*x.^2+c(2)*x.*y+c(3)*y.^2+c(4)*x+c(5)*y+1; %定义匿名函数
% h=fimplicit(fxy,[3.5,8,-1,5]), title('')
%fimplicit效果据说优于ezplot,但这里用不了,差不多啦
h=ezplot(fxy,[3.5,8,-1,5]), title('') %绘制隐函数、符号函数
set(h,'Color','k','LineWidth',1.5)
xlabel('$x$','Interpreter','Latex')
ylabel('$y$','Interpreter','Latex','Rotation',0)
一、meshgrid函数
meshgrid函数是MATLAB中用于生成网格采样点数的函数,通常进行2D、3D图形的绘制。
1、【X,Y】 = meshgrid(x,y) :基于向量x和y中包含的坐标返回二维网格坐标。X是一个矩阵,每一行是x的一个副本,Y也是一个矩阵,每一列是y的一个副本。坐标X和Y表示的网格有length(y)个行和length(x)个列。
2 、[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x)相同,返回网格大小为length(x)*length(x)的方形网格矩阵。
3、 [X,Y,Z] = meshgrid(x,y,z),返回由向量x,y,z定义的三维网格坐标,X,Y和Z表示的网格大小为length(x)*length(y)*length(z)。
样例参考博文
为什么要使用meshgrid?
突然懂了meshgrid的作用,如果mesh(x,y,z) 的z的所有对应(x,y) 的数据都已知,根本不需要meshgrid,只有在Z不知道,但是知道 z 和 (x,y) 的关系式,如给个句柄函数或者函数表达式的时候,需要先生成 二维网格,先当于一个正(长)方体上所有的坐标,再通过函数表达式就可引计算出 z的所有对应(x,y) 的数据
matlab使用矩阵的方式进行运算,对于2D而言,如果采样10个点(指x,y轴),那么对于x=第一个采样点,反映到矩阵就是10个,即不管y是哪个值,x的第一采样点保持不变;对y是同理。因此,2D产生的x和y都是两维矩阵。
简单地说,就是产生Oxy平面的网格坐标。
在进行3-D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x,y)。
这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的操作。然后根据(x,y)计算获得z,并绘制出三维图形。
参考博文
demo1
使用meshgrid绘制z=exp(-x2 -y2 )
clc;clear;close all;
[X,Y]=meshgrid(-3:0.1:3,-3:0.1:3);
Z=exp(-X.^2-Y.^2);
mesh(X,Y,Z);
% mesh(Z(1:60,1:60));
demo2
[x,y] = meshgrid(1:0.5:10,1:20);
z = sin(x) + cos(y);
surf(x,y,z); % surf() 函数用于绘制三维阴影曲面图
mesh注意点
突然懂了meshgrid的作用,如果mesh(x,y,z) 的z的所有对应(x,y) 的数据都已知,根本不需要meshgrid,只有在Z不知道,但是知道 z 和 (x,y) 的关系式,如给个句柄函数或者函数表达式的时候,需要先生成 二维网格,先当于一个正(长)方体上所有的坐标,再通过函数表达式就可引计算出 z的所有对应(x,y) 的数据
mesh(X,Y,Z) 使用 Z 确定的颜色绘制线框网格,因此其颜色与曲面高度成比例。如果 X 和 Y 为向量,length(X) = n 且 length(Y) = m
,其中 [m,n] = size(Z)
。在本示例中,(X(j), Y(i), Z(i,j)) 是线框网格线的交点;X 和 Y 分别对应于 Z 的列和行。如果 X 和 Y 为矩阵,则 (X(i,j), Y(i,j), Z(i,j)) 是线框网格线的交点。X、Y 或 Z 中的值可以是数值、日期时间值、持续时间值或分类值。
若Z是你想要的矩阵,还出现这种错误,试一试将x,y换换位置,或者将Z转置。
size(u) %n*m
x=linspace(0,sum(x),n) ;
t=linspace(0,5400,m) ;
% [X,T]=meshgrid(x,t); 不需要
mesh(t,x,u); %u(x,t)
注意了 mesh(t,x,u); %u(x,t)
三维图像绘制一览
matlab绘图(超全面,很nice)
shading interp作用:对曲面或图形对象的颜色着色进行色彩的插值处理,使色彩平滑过渡。
matlab shading 的用法说明
好像不太用得到
shading interp
用就完了
效果如下,偷的别人的图TT
fsuf函数和fmesh函数
如果函数有三个参数方程,由两个参数,则可以使用这两个函数,调用格式如下:
fsurf(funx,funy,funz,uvlims)
fmesh(funx,funy,funz,uvlims)
其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,用4元向量[umin,umax,vmin,vmax]描述,默认为[-5,5,-5,5]。
quiver 矢量场
参考博文
quiver(x,y,u,v,scale)
scale 用于限定箭头的长度,如果scale = 1 则等值显示矢量的长度
简单样例