MATLAB绘图

xlable

使用字符向量元胞数组创建多行标签

xlabel普通用法示例

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 则等值显示矢量的长度
简单样例

fcontour绘制等高线

官方文档
在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值