【MATLAB】常见语法结构和实用操作

news2025/7/14 5:49:08

目录

语法结构

循环(遍历)结构

函数结构

画图操作

绘制函数图像

ezplot

figure多图绘制

创建多项式 

按照系数创建多项式

 利用多项式零点创建多项式

解方程组


语法结构

循环(遍历)结构

与其它编程语言类似,Matlab也有循环或者说是遍历的语法。下面以输出1到10为例:

for i = 1:10
    disp(i);
end

可以看出它的结构主要有三个部分:

第一部分是关键字for和结束标志end:

第二部分是循环初始值和结束位置,这里注意末尾的10也会进入循环,类似于C语言中的for循环的边界 i<=n ,当 i 为 n 是也会进入循环:

第三部分就是循环内容,也就是循环内部要实现什么目标了,这里我就单纯输出1到10所以数字即可:

函数结构

在我们看matlab中的函数之前,首先看一下C语言中的函数结构:

void func(int x, int y)
{
	return;
}

我们很明显可以看出C语言中函数结构主要包含下面几个部分:函数名、返回值、参数列表、函数内容。

之后再让我们看看matlab中的函数,matlab中的函数也由相似的几部分构成:

第一部分是function函数关键字和返回返回值关键字return:

 第二部分是一个类似函数调用的部分,主要由返回值c、函数名func(注意这里的函数名也是函数文件名)以及参数a构成:

 最后一部分激素函数内容部分了:

画图操作

绘制函数图像

matlab中画图的方式有很多种,在看如何画图之前,我们先来看几个基本的指令:hold onhold off grid on。其中grid on比较好理解,就是在我们画的图上面多了一些网格;而hold on 和hold off有点不太同,hold on可以让多个图并存,即如果此后我们更新图像那么原本的图也会发生改变,即牵一发动全身;hold off则不同,它的每一个图都是独立的,并且相互覆盖

grid on

syms y x;
ezplot(y==x,[-10,10]);
grid on;

hold on 和hold off的区别

hold on:

syms y x;
ezplot(y==x^2,[-6,6]);
hold on;
ezplot(y==x,[-10,10]);

 hold off:

syms y x;
ezplot(y==x^2,[-6,6]);
hold off;
ezplot(p==0,[-10,10]);
hold on
hold off

我们可以看到明显区别hold on的图保持了原来的两幅图,而hold off的图则覆盖掉了原来的第一副图。了解了上面的这些命令后我们先来看看其中比较常见的几个函数:

ezplot

这个函数是比较常见的绘图函数,它包括几种常用的用法、形式:

syms x a y;
y = sin(x);
ezplot('sin(x)');
ezplot(y);

其中包括字符串形式和关于函数的形式,其中ezplot(y),y=sin(x)就是关于函数的形式,y是一个x的函数;还有一种就是字符串形式,例如'sin(x)',其中单引号里面包括的就是一个字符串。 

但是往往并不是所以的函数都是显函数,有时候我们也会拿到一些隐函数,例如:y^{3}-6y+\sqrt{5-x}=0,此时我们就需要利用一个函数f来表示,然后令函数f为0得到的方程画出来的图就是隐函数的图形。

syms y x;
f = y^3-6*y-sqrt(5-x);
ezplot(f==0,[-6,6]);

figure多图绘制

我们知道,ezplot绘制的是一个图形,那么如果我们想要绘制一个框里面多个图像应该怎么做呢?这时候就需要用到figure的多图绘制。首先我们要绘制一个图,需要将x细分为一堆等长区间:

x = 0:0.0001:2; 

这里第一个0表示x的起始值,第三个2表示x的末尾值,而中间的0.001表示将x细分的步长。所以我们这里定义出来的x是一个矩阵,即如果在定义x为自变量的函数时,应该注意点了。再准备一个函数y,令y = x^{2}-6

y = x.*x - 6;

然后我们就可以开始准备画图了,首先准备一个figure框,也就是我们画图常用的哪个框框,并且使用hold on指令保持住这个框,方便接下来画图。然后操作分框函数subplot,这个函数用于将当前的figure框分为几个部分,也就是我们画几个图,它参数的三个数字,前面表示划分的行数,第二个表示划分的列数,第三个数字表示当前图像是第几个框(横向数)。以6个框为例:

subplot(321);
subplot(322);
subplot(323);
subplot(324);
subplot(325);
subplot(326);

然后就是对图像进行绘制(填充)了,我们使用fill函数,第一个参数为自变量,第二个参数为因变量,第三个参数为图像的颜色(英文字符或英文字符缩写均可)。最后的title函数里面跟的就是图像名,这样一个函数图像就画出来了!

x = 0:0.0001:2; 
y = x.*x - 6;
figure;
hold on;
subplot(223);
fill(x,y,'green');
title('y-x');

创建多项式 

下面我们看看在matlab中如何创建多项式,这是我看了其他几个很棒的博主的文章后学习到的,链接我放在了文章结尾。首先是创建多项式的思路,分为两种:按照系数来创建多项式;按照根来创建多项式,下面我们一个个看:

按照系数创建多项式

s = [9,8,7,6,5,4,3];
y1 = poly2sym(s);
disp(y1);

这里使用的是函数poly2sym来创建多项式,我们要创建一个多项式,需要向这个函数传递多项式各项的系数。以数组s为例,我们数组里有7个数字,将数组传递进去后我们得到的多项式的系数从小到大分别为数组最大位到数组最小位,例如上面的s数组创建出来的多项式为:

9x^{6}+8x^{5}+7x^{4}+6x^{3}+5x^{2}+4x^{1}+3

其实我们还可以利用一个与ploy2sym类似的函数ploy2str来创建多项式:

s = [9,8,7,6,5,4,3];
y2 = poly2str(s,'x');
disp(y2)

 不过我们可以利用whos看到这两个方法还是有区别的,它们创建出来的多项式的数据类型是不同的:

 利用多项式零点创建多项式

r = [0,1,3];
y = poly2sym(poly(r));
disp(y);

除了刚才利用系数来创建多项式的方法,我们还可以利用多项式的零点来创建多项式,例如我们得到多项式一组零点r=[0,1,3]。那么我们也可以先使用ploy函数处理零点,再利用poly2sym函数来创建多项式。

解方程组

前面说了一些语法的结构,下面我们来看一个更加实际的作用:求解线性方程组的解。要知道,之前我们求简单方程的解使用的是solve这个函数,但是我们有时候往往需要去求一些方程组,这时候就需要寻找别的方法了。

回顾一下线性代数,我们求解方程组还有一个方法就是使用矩阵求解,例如方程组:

\left\{\begin{matrix} 3x+5y-6z=9 \\x-8y+7z=6 \\2x+6y+3z=3 \end{matrix}\right.

我们使用矩阵求解的大致步骤就是求出系数矩阵,然后将两边乘系数矩阵逆矩阵消去系数的解就是X:

\begin{pmatrix} 3& 5 &-6 \\ 1& -8 &7 \\ 2&6 &3 \end{pmatrix}X = \begin{pmatrix} 9\\6 \\3 \end{pmatrix} =>X = \begin{pmatrix} 3& 5 &-6 \\ 1& -8 &7 \\ 2&6 &3 \end{pmatrix}^{-1}\begin{pmatrix} 9\\6 \\3 \end{pmatrix}

所以我们使用matlab求解线性方程组的方法也类似,首先定义一个系数矩阵A,然后再定义一个矩阵B,X的结果就是A^{^-1}B。对应着,matlab表现A^{^-1}的方法是A后面跟一个反斜杠 \

A = [3 5 -6;
     1 -8 7;
     2  6 3];
B = [9;
     6;
     3];
X = A\B;
disp(X);

参考资料:

https://blog.csdn.net/qq_38431572/category_9417566.html

matlab多项式构造/求根/某处的值_执念斩长河的博客-CSDN博客_matlab多项式构造

matlab中 hold on 与 hold off,figure作用_江江江在奋斗的博客-CSDN博客_figure hold on

matlab中的ezplot函数详解_「已注销」的博客-CSDN博客_ezplot函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/36678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用辅助类

CountDownLatch 应用场景&#xff1a;1.多线程任务汇总。2.多线程任务阻塞住&#xff0c;等待发令枪响&#xff0c;一起执行。 减法计数器 每次有线程调用&#xff0c;数量-1&#xff0c;当计数器归零&#xff0c;countDownLatch.await()就会被唤醒向下执行。 import java.uti…

【代码随想录】二刷-二叉树

二叉树 《代码随想录》 二叉树的遍历方式 深度优先遍历: 前序遍历(递归法、迭代法): 中左右中序遍历(递归法、迭代法): 左中右后序遍历(递归法、迭代法): 左右中 广度优先遍历: 层序遍历(迭代法) 二叉树的定义 struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeN…

无线传感器网络:网络层

文章目录Challenges for RoutingEnergy EfficiencyScalabilityAddressingRobustnessTopologyApplicationRouting MetricsQuality-of-Service (QoS)Minimum HopEnergyMinimum energy consumed per packetMaximum time to network partitionMaximum average energy capacityMaxim…

Java并发-操作系统,进程,线程,并行并发?

我们首先来看看&#xff0c;三者之间的关系&#xff0c;从图中可以看到 操作系统是包含多个进程的容器&#xff1b;而每个进程又是容纳多个线程的容器。什么是进程&#xff1f;官方定义&#xff1a; 进程&#xff08;baiProcess&#xff09;是计算机中的程序关于某数据集合上的…

详解:网络虚拟化卸载加速技术的演进

在传统的应用场景中&#xff0c;服务器资源过剩情况普遍&#xff0c;为了充分利用服务器资源&#xff0c;产生了虚拟化技术。虚拟化技术以牺牲部分效率为代价提升了资源的使用率&#xff0c;将原来需要硬件完成的工作&#xff0c;通过软件模拟的方式&#xff0c;满足多个云租户…

初识Qt Quick

讲讲最近几年Qt的热门技术Quick这一块了。 啥是Qt&#xff1f; 哦&#xff0c;这是一个宣称可以跨任意平台&#xff0c;开发各种场景应用软件的开发框架。从三个维度来讲&#xff0c;就是开发库framework&#xff0c;集成开发平台IDE&#xff0c;以及成熟的开发思维模式。 Q…

CAS:82055-94-5,Azide-PEG-Azide,N3-PEG-N3,叠氮聚乙二醇叠氮试剂供应

1、名称 英文&#xff1a;Azide-PEG-Azide&#xff0c;N3-PEG-N3 中文&#xff1a;叠氮-聚乙二醇-叠氮 2、CAS编号&#xff1a;82055-94-5 3、所属分类&#xff1a;Azide PEG 4、分子量&#xff1a;可定制&#xff0c;叠氮-PEG-叠氮 2000、叠氮peg叠氮 1000、叠氮-聚乙二醇…

org.activiti.bpmn

org.activiti.bpmn目录概述需求&#xff1a;设计思路实现思路分析1.BpmnAutoLayout2.BPMNLayout参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for ch…

Mybatis概述

1 概述 原来是Apache的一个开源项目&#xff0c;叫iBatis, 2010年6月这个项目由 Apache Software Foundation 迁移到了 Google Code&#xff0c;随着开发团队转投Google Code 旗下&#xff0c;从 iBatis3.0正式更名为MyBatis。 MyBatis 是一款优秀的持久层框架&#xff0c;对j…

容器卷挂载的秘密

什么是容器卷 数据卷 &#xff08;Data Volumes &#xff09;是一个可供容器使用的特殊目录&#xff0c;它将主机操作系统目录直接映射进容器&#xff0c;类似于 Linux 中的 mount 行为。 容器挂载原理 containerd创建的容器里的数据存储在下面的目录中 [rootmaster01 httpb…

【C/C++】万字图文详解C语言文件操作 完美装饰课设大作业

目标导航 写在前面 为什么使用文件&#xff1f; 什么是文件&#xff1f; 程序文件 数据文件 认识文件名 文件的打开和关闭 文件指针 文件的打开和关闭 1.以"r"&#xff08;只读&#xff09;的方式打开文件 2.以"w"&#xff08;只写&#xff09;…

Java#24(常见API--2)

目录 一.Rantime Runtime表示当前虚拟机的运行环境 Runtime常用方法 扩展:对象克隆 二.Objects Objects是一个对象工具类,提供了一些操作对象的方法 一.Rantime Runtime表示当前虚拟机的运行环境 Runtime常用方法 方法名 作用 publi…

葡萄糖-聚乙二醇-链霉亲和素|Streptavidins-PEG-Glucose|链霉亲和素-PEG-葡萄糖

链霉亲和素(streptavidin下称SA)是与亲和素(avidin下称AV)是一种蛋白质&#xff0c;链霉亲和素是四聚体蛋白&#xff0c;大小为66KDa。一分子链霉亲和素可以高度特异性地与四分子生物素结合&#xff0c;两者之间的亲和力较为强烈。链霉亲和素分子由4条相同的肽链组成&#xff0…

delete-by-query和复合查询

根据term&#xff0c;match等查询方式去删除大量的文档 Ps&#xff1a;如果你需要删除的内容&#xff0c;是index下的大部分数据&#xff0c;推荐创建一个全新的index&#xff0c;将保留的文档内容&#xff0c;添加到全新的索引 # delete-by-query POST /sms-logs-index/sms-lo…

毕业设计-基于机器视觉的颜色目标识别

目录 前言 课题背景和意义 实现技术思路 什么是彩色空间 怎么利用彩色空间 颜色识别的过程 读取图片进行hsv色域转换 对图片特定颜色识别 本地摄像头对视频流进行颜色识别 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后…

Python基础-面向对象编程之特性(property)

Python面向对象编程之特性(property) 一、统一访问原则 通常&#xff0c;我们访问实例或类的属性时&#xff0c;将返回所存储的相关值。而特性&#xff08;property&#xff09;是一种特殊的属性&#xff0c;访问它时会计算它的值。 请看下面的例子&#xff1a; import mat…

基于android的个性闹铃的设计与开发(闹铃,日历,计时器,备忘录)

目 录 摘 要 2 Abstract 2 1 选题的背景和意义 5 1.1 选题的背景 5 1.2 国内外研究现状 5 1.2.1 国内外手机系统现状 5 1.2.2 国内外手机应用现状 7 1.2.3 发展趋势 7 2 需求分析 9 2.1 系统需求 9 2.2 需求分析 9 2.3 约束与限制 10 3 总体设计 11 3.1 系统结构图 11 3.2 总体…

【数论】约数

文章目录一、试除法求n的所有约数二、约数个数三、约数之和四、最大公约数&#xff08;欧几里得算法/辗转相除法&#xff09;一、试除法求n的所有约数 vector<int> getDivisors(int n) {vector<int> ans;for (int i 2; i < n / i; i) {if (n % i 0) {ans.pus…

深度学习Week8-咖啡豆识别(Pytorch)

目录 一、前期准备 1.设置GPU 2. 导入数据 3. 划分数据集 二、手动搭建VGG-16模型 1. 搭建模型​编辑 2. 查看模型详情 三、 训练模型 1. 编写训练函数 2. 编写测试函数 4. 正式训练 四、 结果可视化 1. Loss与Accuracy图 2. 指定图片进行预测 3. 模型评估 *五、优…

[附源码]java毕业设计中达小区物业管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…