用matlab绘制二元函数图像_心形函数表达式

用matlab绘制二元函数图像_心形函数表达式文章目录Matlab二元函数图像绘制plot3函数的基本用法fplot3函数基本用法进阶用法绘制二元函数图像Matlab二元函数图像绘制在讲二元函数图像绘制之前,先讲解plot3与fplot3的实际用法,之后再讲解二元函数图像绘制,有需要的同学可直接跳转查看。plot3函数的基本用法本节通过循序渐进的方法,先介绍简单的plot3用法,接着再一步一步进阶难度,并且在代码中给出每块代码的功能以及使用方法,以帮助大家更快的学习使用。实例1:绘制三维直线%给定x、y、z的数值x=[1,2,3];

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Matlab二元函数图像绘制

在讲二元函数图像绘制之前,先讲解plot3与fplot3的实际用法,之后再讲解二元函数图像绘制,有需要的同学可直接跳转查看。

plot3函数的基本用法

本节通过循序渐进的方法,先介绍简单的plot3用法,接着再一步一步进阶难度,并且在代码中给出每块代码的功能以及使用方法,以帮助大家更快的学习使用。

实例1:绘制三维直线

% 给定x、y、z的数值
x = [1,2,3];
y = [3,4,5];
z = [1,2,3];
plot3(x,y,z)
% axis函数,指定x、y、z轴的上下界
axis([0,3,2,6,0,3])
% 标志x、y、z轴的轴名
xlabel("x轴")
ylabel("y轴")
zlabel("z轴")
% 开启网格线
grid on

运行结果如下图所示:
image-20200724110611835

实例2:绘制螺旋线
image-20200724111315380

可以看到,xyz都是由t参数决定的,因此在使用绘制曲线使用plot3函数之前,需要先为t定义。

% 为t定义,在matlab里等效于为t建立矩阵,在这里有两种办法,一种是利用matlab自带的linespace函数,一种是使用matlab语法建立关于t的矩阵
% linspace(0,10*pi,1000)
t = 0:0.01*pi:10*pi
x = sin(t) + t.*cos(t);
y = cos(t) - t.*sin(t);
z = t;
plot3(x,y,z)
axis([0,40,0,40,0,40])
grid on
xlabel("x轴")
ylabel("y轴")
zlabel("z轴")

这里用到了矩阵的点乘,关于矩阵乘法的知识点,大家可以在这里查看
https://www.cnblogs.com/fx-bk/p/10818371.html

可以很轻易的看出,上面两个例子给出的都是xyz的一维矩阵形式,一维矩阵的长度取决于t的矩阵长度。当xyz的矩阵形式从一维升级到多维时,plot3函数就可以画出多条曲线,由此引出今天的第3个实例。
实例3:在空间上绘制三条螺旋线

综上所述,当需要绘制三条螺旋线的时候,xyz的为3*300矩阵(300为t一维t矩阵的列数)

% 首先定义t的矩阵,这次使用linespace函数
t = linspace(0,10*pi,300);

x = [sin(t) + t.*cos(t),sin(t) + t.*cos(t),sin(t) + t.*cos(t)];

y = [cos(t) - t.*sin(t) ,cos(t) - t.*sin(t) + 1,cos(t) - t.*sin(t) + 2];

z = [t,t,t];

plot3(x,y,z);
grid on
xlabel("x轴")
ylabel("y轴")
zlabel("z轴")

结果如下:
image-20200724113650756

在讲fplot3之前,先跟大家讲一下fplot3与plot3的区别,两者都可以用来绘制图形,但plot3针对任意变量x与y都可以绘制,而fplot则需要定义一个函数才可以实现绘制。

fplot3函数基本用法

在正式使用fplot3函数之前,我们得先了解的fplot3函数的语法:

fplot3(funx,funy,funz,tlims);

funx、funy、funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。
tlims为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5]。

实例4:绘制墨西哥帽顶曲线

image-20200724114959342

% 由于fplot3需要输入定义域
% 因此我们不需要像plot3那样
% 重新为参数t进行定义
% 但由于我们在使用t之前没有为t
% 进行定义,因此需要在加上@(t)的操作
xt = @(t) exp(-t/10).*sin(5*t);
yt = @(t) exp(-t/10).*cos(5*t);
zt = @(t) t;
fplot3(xt, yt, zt, [-12, 12])
grid on
xlabel("x轴")
ylabel("y轴")
zlabel("z轴")

这样子我们的图像就绘制出来啦:
image-20200724115408617

进阶用法

曲线颜色

不管是plot3还是fplot3都可以对图像的颜色进行改变。以下介绍两个改变图像颜色的方法:

方法一:

‘r’表示内置的颜色红色,类似的还有:
‘m’ 粉红 ‘g’ 绿色 ‘c’ 青色 ‘b’ 兰色 ‘w’ 白色 ‘y’ 黄色 ‘k’ 黑色

方法二:使用数组自定义颜色,注意三个分量取值在0~1之间,表示红、绿、蓝三原色的混合比例

曲线标识符

image-20200724120447298

绘制二元函数图像

有了上面的基础后,我们对matlab绘图有了更加深刻的理解。现在便来讲一下二元函数图像的绘制。

二元函数在matlab使用meshgrid函数绘制:
语法

[X,Y] = meshgrid(x,y)
基于向量 xy 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副Y 也是一个矩阵,每一列是 y 的一个副本。坐标 XY 表示的网格有 length(y) 个行和 length(x) 个列。

[X,Y] = meshgrid(x)

[X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x)×length(x) 的方形网格坐标。

鉴于很多同学可能不太理解二维网格的概念,先给大家讲一下二维网格

二维网络

% 使用向量x定义的x坐标和向量y定义的y坐标创建二维网格坐标

x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)

% 根据上述语法可知
X =

     1     2     3
     1     2     3
     1     2     3
     1     2     3
     1     2     3


Y =

     1     1     1
     2     2     2
     3     3     3
     4     4     4
     5     5     5

在二维网格上计算表达式 x^2 + y^2

X.^2 + Y.^2 ;
ans = 5×3

     2     5    10
     5     8    13
    10    13    18
    17    20    25
    26    29    34

绘制曲面图

绘制图像 y = x1^2 + x2^2;

x1属于[0,10];x2属于[0,10];

使用均匀分布的x坐标和y坐标在曲线[0,10]内创建二维网格

x1 = 0:0.01:10;
x2 = x1;
[X1,X2] = meshgrid(x1);
y = X1.^2 + X2.^2;
surf(x1,x2,y)

绘制结果如图所示:
image-20200724131037243

绘制的关键在于清楚理解meshgrid函数的使用方法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196259.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 关于input type=“file”的及其files对象的深层探究

    关于input type=“file”的及其files对象的深层探究我们都知道,html5中有个inputtype=file元素。用该元素可以实现页面上传文件的功能但一般的做法只是简单的在表单中操作,我来研究一下深层东西想要了解它,就要知道它的内置对象,files页面上写一个input,然后选俩个图片,打印这个input对象$(“input[name=’file1′]”).change(function(e){console.log…

  • java string转inputstream(substring截取字符串)

    Apachecommons是一个强大的Java辅助工具包。它提供的IOUtils可以让我们很便捷的实现InputStream转换为String。StringWriterwriter=newStringWriter();IOUtils.copy(inputStream,writer,encoding);StringtheString=writer.toString();首先把in…

  • html css 分页样式,css中分页样式

    html css 分页样式,css中分页样式css中分页样式css分页样式的设置,我们可以采用ul+li来实现,设置li标签float为left,让它们排列在一行,再设置li标签里面的a标签样式。具体实现如下:部分css代码解释#model14ul{padding-inline-start:0!important;/*设置ul的开头距离为零必面设置自动居中时影响美观*/}#model14li:first-child{mar…

  • CentOS7.0下安装FTP服务的方法

    CentOS7.0下安装FTP服务的方法

    2021年10月19日
  • 简易的倒计时代码_简单的网页代码

    简易的倒计时代码_简单的网页代码在一些活动项目中,大多会涉及倒计时。以下为倒计时代码,供小白参考。关键词:计时器、时间差具体代码如下:<!DOCTYPEhtml><html> <head> <metacharset="utf-8"/> <title>倒计时代码</title> <styletype="te

  • 平面图,对偶图,「建议收藏」

    平面图,对偶图,「建议收藏」平面图定义:图存在一种形式,所有的边只在顶点处相交,那么这个图就是平面图。对偶图定义:对于每一个平面图,都有与其相对应的对偶图.我们假设上面的例图是图G,与其对应的对偶图G*,那么对于G*来说,G*上面的每一个点,对应的是G里面的每一个面.比如说下面就是G*.上面的点就是对偶图G里的点. 那么关于对偶图G*里的边呢?对于G中本来的每条边e,他是两个面…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号