Matlab绘图(专题二)

 

目录

1.二维作图

plot散点画图

fplot函数表达式画图

ezplot隐函数作图

2.三维作图

plot3

mesh

surf

3.特殊图绘制

等高线

散点做图

切片图


 

1.二维作图

基本命令plot(根据数据点画图),fplot(根据函数表达式画图),ezplot(隐函数和参数画图)。

plot(离散的):绘制离散的点,x,y需要输入的是向量,所以需要注意的是当使用*和^时需要在前面加.

fplot(连续的):绘制连续的曲线,输入一个函数表达式。

话不多说,咱们直接上图演示

plot散点画图

参数解释:plot(x,y,'*r'),*r代表曲线的离散点由*表示,且为红色。

x=0:0.2*pi:2*pi;%代表0到2Π范围内,以0.2Π为间隔取点,也就是我们所熟悉的步长、公差。
y=sin(x);
plot(x,y,'*r')

e3747b769d49415c8d968cfa14b02102.png

当我们去掉*,系统就会默认帮我们用线连接起来

x=0:0.2*pi:2*pi;
y=sin(x);
plot(x,y,'r')

85f2ac40a8c843fd8fdfdbfe791de0bb.png

当我们缩小间隔,增加数据点,图像也就越来越像原函数。

x=0:0.01*pi:2*pi;
y=sin(x);
plot(x,y,'*r')

42818ed9d6554171bd71ec3d4621a951.png

把上面的*改成字母o会得到圆圈效果。

大家也可以尝试下多种符号。比如+、-、--等等

fplot函数表达式画图

fplot(f,x_axis,style)

参数解释:

f代表关于自变量x的表达式

x_axis代表自变量的范围。

style代表样式属性,类似前面plot的第三个参数。

fplot(@(x)cos(x),[0,2*pi],'r')

标识符@(x)代表对自变量x进行的绘图。就比如@(a)代表对自变量a进行的绘图

[0,2*pi]代表自变量x的范围,‘r’代表画图的颜色为红色。

3834734864e44aef91d410a778bdfb5a.png

接下来绘制参数曲线

fplot(@(t)sin(t),@(t)cos(t),[0,2*pi],'r')

7cf5618bff0c49f2a4f7fb8e58b45540.png

ezplot隐函数作图

ezplot(‘f(x)’ ,[a,b])
表示在a<x<b绘制显函数f=f(x)的函数图
ezplot('sin(x)',[0,pi])

28d435cb964c4c89a2c783721909065f.png

ezplot(‘x(t)’ , ’y(t)’ ,[tmin,tmax])
表示在区间tmin<t<tmax绘制参数方程
x=x(t),y=y(t)的函数图
例如绘制星型图
ezplot('cos(t)^3','sin(t)^3',[0,2*pi])
34fae497134e4273b09deebf3dd7032e.png

 

ezplot(‘f(x,y)’ ,[xmin,xmax,ymin,ymax])
表示在区间xmin<x<xmax和 ymin<y<ymax绘制
隐函数f(x,y)=0的函数图
例如单位园的上半园
ezplot('x^2+y^2-1',[-1,1,0,1])

6cc6873b367b4d69a2dd3edfa0f9450e.png

2.三维作图

plot3、mesh、surf

plot3

绘制三维曲线

类似plot,只不过多了个z参数。

x=sint

y=cost

z=t

t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)

aa0d094b01834a37bc858000d724b356.png

配合meshgrid绘制曲面

在mesh小节再解释为什么用meshgrid

x=-3:0.1:3;y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
Z=sqrt(X.^2+Y.^2);
plot3(X,Y,Z)

5a6efc3b579544769ceb5803838861ea.png

如果不用meshgird,那么得到的只是一个不完整的截面

x=-3:0.1:3;y=-3:0.1:3;

Z=sqrt(X.^2+Y.^2);
plot3(X,Y,Z)

9315fb8203814dcf9ddd7cea8123438d.png

mesh

此命令要结合meshgrid来用,制作的是网格曲面

mesh(x,y,z)需要注意的是必须是同维数的矩阵。所以当用z=f(x,y),必须用点乘和点幂。

例如制作我们非常熟悉的马鞍面。

t=-10:0.2:10;
x=t;y=t;
[x1,y1]=meshgrid(x,y);
z=x1.^2-y1.^2;
mesh(x1,y1,z)

8bd8c61e0cba400f8df03645fbba7f57.pngd8184adaa5324f319168b9ad9131f94f.png

强行解释下meshgrid的作用,说白了其实就是对一个1xn维的向量变成一个nxn维的矩阵.

为什么要变成矩阵呢?理由很简单,毕竟xoy是一个平面,为了三维立体化,所以我们需要变成二维数组,也就是一个矩阵。

如果只是原来的x,y(1xn维数组),那么形成的只是线而不是一个平面。

话不多说,直接上图演示:

479d2c198a664cbe8fd07cdcf7ebe5f7.png

原始的t=x=y=[1 2 3 4],可以看出x,y由原来的1x4一维数组变成了4x4二维矩阵

surf

作用和mesh一样都是网格曲面,还是拿上面的例题来绘画。

这次在画图后面,咱们加一个命令去掉网格线,使其变得光滑好看些。

t=-10:0.2:10;
x=t;y=t;
[x1,y1]=meshgrid(x,y);
z=x1.^2-y1.^2;
surf(x1,y1,z)
shading flat

716497f79f2f45019c791ef4714f6ec6.png6e9d692a17f84c86afaec77e2ec8f0fd.png

3.特殊图绘制

例如等高线、散点图、切片图

等高线

contour(Z,n)期中n为所绘制的图形等值线的条数。

咱们可以结合内置函数peaks一起使用

[x,y,z]=peaks;
contour(z,15)

bdcb4aa96ffc4c699223725a6438b645.png

那么问题来了peaks是什么?

MATLAB里的peaks是一个内置函数,用于处理图形数据1。具体来说,该函数可以生成一个30×30的guassian分布矩阵。更详细地,peaks函数的数学形式如下:

f(x,y) = 3 * (1 - x)^2 * exp(-x^2 - (y + 1)^2) - 10 * (x / 5 - x^3 - y^5) * exp(-x^2 - y^2) - 1/3 * exp(-(x + 1)^2 - y^2)

这个函数是由两个变量生成的,并且表示为多元函数。

接着上面的,也可以用

contour3(z,15)

来生成3维可视化图形
24b3de0409ea4beaa6b08586e5b074c4.png

散点做图

scatter命令,5代表散点大小,你可以尝试下把5改成100会变成什么样。

x=-1:0.1:1;
y=x.^2;
scatter(x,y,5)

dd264bd2d9f14ba5bcd05c457b768162.png

下面来展示三维的

t=-10:0.2:10;
x=t;y=t;
[x1,y1]=meshgrid(x,y);
z=-x1.^2-y1.^2;
scatter3(x1(:),y1(:),z(:),1)

c5d9e65b19f04d24acbaaf4564af2843.png

切片图

切片函数:slice(X,Y,Z,V,xslice,yslice,zslice)

后面三个参数代表从哪个点开切,比如xslice=[-1 0 1]表示x从-1,0,1开切

t=-2:0.1:2;
x=t;y=t;z=t;
[x1,y1,z1]=meshgrid(x,y,z);
v=x1.^2+y1.^2+z1.^2;
slice(x1,y1,z1,v,[-1 0 1],[-1 0 1],[-1 0 1])

b3248df4394246909bb89fd8c43cca34.png

饼图 

clear
data = [30, 20, 15, 10, 5];
explode=[0 1 0 1 0];%1代表数据拿出来,0则保持原位
labels={'30的占比','20的占比','15的占比','10的占比','5的占比'};
figure(1)
pie(data,explode)
figure(2)
pie(data,explode,labels)

c2df8ee973b24bdeac5ccbbc3320b50a.png

 

  • 55
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无常(F)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值