数学建模笔记 day-03

第三章 Matlab绘图及视频读写

3.1 散点图

3.1.1 基于scatter函数的二维散点图

给定平面上的n个不同点的直角坐标(Xi,Yi)(i=1,2,......,n),两个坐标分量组成的向量分别用向量x和y表示。使用scatter函数绘制散点图,常用的3种格式如下:

scatter(x,y),scatter(x,y,sz),scatter(x,y,sz,c)

每个离散点默认用圆圈表示。在第二种格式中,sz表示圆圈大小,若s为标量,则所有圆圈大小相同;若sz为n维向量,则其分量值越大,圆圈越大。在第三种格式中,c表示颜色,当c为n维向量时,其分量取值越大,对应圆圈的颜色越红,反之越蓝;当c为1*3维向量时,它的分量分别表示R、G、B的值,这里RGB分别表示3种颜色red、green、blue。

a=rand(3)
b=rand(2,3)
save mydatal a b %保存一个以maydatal为名字的mat文件
load mydatal        %将文件变量加载到工作区
load mydatal.mat    %将文件变量加载到工作区
load('mydatal.mat') %将文件变量加载到工作区
subplot(121)       %打开一行二列的第一个窗口进行操作
scatter(x,y)
subplot(122)       %打开一行二列的第一个窗口进行操作
scatter(x,y,[],z)

 实例分析:

clc ,clear
load seamount                   %加载Matlab内置文件seamount.mat
subplot(121),scatter(x,y,20,z)  %圆圈大小为20
title('(A)s=20')                %设置大标题
xlabel('$x$','Interpreter','Latex')               %设置x轴
ylabel('$y$','Interpreter','Latex','Rotation',0)  %设置y轴
subplot(122),scatter(x,y,30,'fill')
title('(A)s=30')                %设置大标题
xlabel('$x$','Interpreter','Latex')               %设置x轴
ylabel('$y$','Interpreter','Latex','Rotation',0)  %设置y轴

3.1.2 基于scatter3的函数的三维散点图

在三维空间,n个点构成的横坐标,纵坐标和竖坐标向量分别为x,y,z,则绘制散点图的函数为scatter3,它的常用格式为

scatter3(x,y,z),scatter3(x,y,z,sz),scatter3(x,y,z,sz,c),其中sz和c的意义与scatter中的意义相同

实例分析:

clc,clear
load seamount.mat       %加载Matlab内置文件seamount.mat
scatter3(x,y,z,30,z,'fill')
xlabel('$x$','Interpreter','Latex')               %设置x轴
ylabel('$y$','Interpreter','Latex')               %设置y轴
zlabel('$z$','Interpreter','Latex','Rotation',0)  %设置z轴

注:scatter和scatter3默认用圆圈表示点,当然也可以用三角形、正方形、菱形、五角星和六角星等封闭符号来表示。若在scatter和scatter3中使用了fiied,则不建议使用非封闭的加号、黑点、叉号和星号等等符号。

3.2 基于plot函数的散点图和平面曲线绘制

已知二维平面上的n个点,构成的x坐标和y坐标向量分别为x,y,把这n个点按照先后顺序用线段相连,就得到过这n个点的折线图。Matlab无法绘制真正意义上的曲线,实际绘制的都是折线图;如果相邻两点之间不连线段,则绘制出散点图。

plot函数是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的,可以绘制线段和曲线。函数plot的最典型调用方式是三元组形式:

plot(x,y,'Color|Linestyle|Marker')

其中x,y为同维数的向量(或矩阵),x作为点的横坐标,y作为点的纵坐标,plot命令用直线连接相邻两数据点绘制图形。Color、Linestyle和Marker分别是颜色、线型和数据点标记,它们之间没有先后顺序之分。

常用的颜色、线型和数据点符号如表所示

颜色符号颜色线型符号线型数据点符号标记
b(默认)蓝色-(默认)实线+十字
r红色:短虚线*星号
y黄色--长虚线0圆圈
g绿色-.点划线X叉号
c蓝绿色s正方形
m紫红色d菱形
k黑色p五角星
w白色h六角形

 画二维曲线图时,当知道曲线的函数表达式时,可以使用2种方式画图:

(1) 用描点画图命令plot

(2)用函数画图命令fplot

示例1:

clc,clear,close all
load seamount
subplot(121),plot(x,y,'ro')   %绘制二维散点图
title('(A)二维散点图')
subplot(122),plot3(x,y,z,'bo')%绘制三维散点图 

注!!!:此时未指明线型符号,所以没有连线 

示例2:

clc,clear,close all
t=0:1:2*pi;
x=cos(t);y=sin(t);
plot(x,y),axis square
figure                          %再开辟一个图形窗口
x=@(t)cos(t);y=@(t)sin(t);
fplot(x,y,[0,2*pi]),axis equal  %[0,2*pu=i]为x的取值范围

示例3:画出单位圆的内接八边形

clc,clear, close all
t1=linspace(0,2*pi);    %等间距取100个值
x1=cos(t1);y1=sin(t1);
plot(x1,y1)             %化单位圆
hold on                 %图形保持
t2=linspace(0,2*pi,9)   %等间距取9个不同点,0和2*pi对应的点重合
x2=cos(t2);y2=sin(t2);
plot(x2,y2,'.k-'),axis square

3.3 三维绘图命令

MATLAB也提供了一些三维基本画图命令,如三维曲线命令plot3,三维网格图命令mesh和三维表面图命令surf.

plot3(x,y,z)通过描点连线画出曲线,这里x,y,z分别表示数据点的横坐标、纵坐标和竖坐标,如果x和y是向量,x是m维的向量,y是n维的向量,则z是n*m维的向量,则z是n*m的矩阵。x,y,z也可以都是同维数的矩阵,命令mesh(x,y,z)将该数据点在空间中描出,并连成网格图。命令surf(x,y,z)画出三维表面图,这里x,y,z分别表示数据点的横坐标、纵坐标和竖坐标。

已知曲线或曲面的函数关系,提倡使用fplot3,fmesh,fsurf等命令画图。

三维空间的隐函数绘图命令为fimplicit3

示例1 画出三维螺旋线 x=tcost,y=tsint,z=t的图形

clc,clear
t=0:0.01:100;
x=t.*cos(t);
y=t.*sin(t);
subplot(121),plot3(x,y,t)
x=@(t)t.*cos(t);
y=@(t)t.*sin(t);
z=@(t)t;
subplot(122),fplot3(x,y,z,[0,100])

示例2  绘制出x^{2}/4+y^{2}/2=z^{2} 的网格曲线图

clc,clear,close all
subplot(121)
x=@(t,z)2*z.*cos(t);
y=@(t,z)sqrt(2)*z*sin(t);
z=@(t,z)z;
fsurf(x,y,z,[0,2*pi,-5,5]),title('')   %[0,2*pi]为t的取值范围,[-5,5]为z的取值范围
subplot(122)
fimplicit3(@(x,y,z)x.^2/4+y.^2/2-z.^2,[-10,10,-10,10,-5,5])

示例3 莫比乌斯环

注!!!:fplot3输入必须为一个或多个包含单个变量的函数。

clc,clear,close all
x=@(s,t)(2+(s/2).*cos(t/2)).*cos(t);
y=@(s,t)(2+(s/2).*cos(t/2)).*sin(t);
z=@(s,t)(s/2).*sin(t/2);
fmesh(x,y,z,[-1,1,0,2*pi])

附:contour(x,y,z) --矩阵的等高线图

    作用:此 MATLAB 函数 创建一个包含矩阵 Z 的等值线的等高线图,其中 Z 包含 x-y 平面上的高度值。MATLAB 会自动选择要显示的等高线。Z的列和行索引分别是平面中的 x 和 y 坐标。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数学建模是一门重要而又有趣的学科,它是将数学的方法与现实问题相结合的过程。在进行数学建模的过程中,笔记的记录是非常重要的,可以帮助我们更好地理解问题、掌握建模方法,并且方便后期的复习和总结。 我想将我的数学建模笔记手写在CSDN上,主要出于以下几个原因。首先,手写笔记能够培养我对数学建模概念的理解和记忆能力。通过亲自动手书写数学模型、公式和解题步骤,我可以更好地掌握知识点,避免只是机械地复制粘贴或者直接照抄书中的内容。 其次,通过手写笔记,我可以更好地记录自己在建模过程中的思考和想法。数学建模一个灵活而创造性的过程,每个人对问题的理解和解决方式不尽相同。在手写笔记中,我可以更加自由地表达自己的思路和想法,将自己独特的见解与他人分享。 此外,手写笔记也可以提高我对数学建模问题的整体把握能力。在手写过程中,我需要整理和提炼一些关键的概念和知识点,并将它们以更简洁、更清晰的方式呈现出来。这种整合和概括的过程可以帮助我更好地理解问题的本质和解决思路,并将其与其他相关知识进行联系,形成一个更完整的知识体系。 最后,将数学建模笔记手写在CSDN上,可以与其他同学和科研者进行交流与讨论。CSDN是一个专注于计算机科学与技术的知识分享平台,拥有众多对数学建模感兴趣的读者和作者。通过将自己的笔记分享在CSDN上,可以获得更多人的意见和建议,从而不断完善自己的建模能力。 总而言之,数学建模笔记的手写在CSDN上,不仅可以帮助我提升对数学建模的理解和记忆能力,还可以促进思考、整理和交流能力,对于提升自己的数学建模能力具有重要意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值