MATLAB入门教程 | 001基础知识

news2024/11/28 21:43:31

一、认识MATLAB

1. MATLAB概述

(1)在欧美各高等学校, Matlab成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为本科生、硕士生和博士生的必须掌握的基本技能。

(2)在设计研究单位和工业部门, Matlab已被广泛地用于研究和解决各种具体的工程问题。

(3)可以预见,Matlab将在我国科学研究和工程应用中发挥越来越大的作用。

2. MATLAB特点

功能强大

  • 数值运算优势

  • 符号运算优势

  • 强大的2D、3D数据可视化功能

许多具有算法自适应能力的功能函数

  • MATLAB以数组为基本计算单元

  • 具有大量的算法优化功能函数

  • 编程易、效率高

语言简单、内涵丰富

  • 语言及书写形式非常接近于常规数学书写形式

  • 完备的帮助系统,易学易用

MATLAB主页面

3. 命令窗口的使用

MATLAB命令窗口

“>>”与光标的闪烁一起说明系统就绪,等待输入;

在命令行窗口【Enter】键提交命令执行;

计算2+[(13-7)×8]÷23

MATLAB所用的运算符如(加减乘除等)是各种计算程序中常见的;

计算结果中的“ans”是英文“answer”的缩写,是MATLAB预定义的变量;

4. 创建M文件

当简短的几行代码无法完成任务时,需要建立M脚本,将所有代码放在一个脚本文件里,按顺序执行。

点击新建,选择新建一个脚本还是新建一个函数,脚本文件可以直接执行,函数文件需要在脚本文件或者是命令行窗口调用之后才可使用。

新建的函数文件带有默认的返回变量、形参及函数名,按需要修改,在函数体内编辑代码即可。

5. 目录和文件管理

当前文件夹包含了工作目录下的详细文件列表,可以选择运行M文件,装载mat数据和编辑文件等功能。运行时,鼠标右键点击打开即可。

更改当前工作目录时,点击右侧下拉箭头,重新选择即可。

在Matlab中,所有文件都通过一组严谨的目录文件夹结构进行管理,在进行文件、函数和数据搜索时,Matlab会按照既定的搜索路径进行搜索。检查的次序大致为:首先检查搜索的内容是否为变量;如果不是变量,那么检查是否为内置函数;如果不是内置函数,那么检查当前工作目录下是否有M文件形式的搜索目标,如果没有,将在其他设定的搜索路径中搜索。

6. 搜索路径管理

如果用户有多个文件需要和Matlab进行信息交互,或者说经常需要进行数据交换,可以将这些文件放到Matlab的搜索路径上,保证做这些文件可以在搜索路径上被调用。如果某个目录需要运行产生的数据和文件,需要将该目录设为当前工作目录。如果用户需要修改搜索路径,可以在命令行窗口输入pathtool命令。

用户可以单击“添加文件夹”,将新的路径加入到搜索路径中,如果需要搜索的路径还包含子文件夹,则单击“添加并包含子文件夹”。

如果需要对已经加入到搜索路径中的文件夹搜索顺序进行调整,可以选择“移至顶端”、“上移”、“下移”、“移至底端”四个按钮来移动文件夹的位置。

二、MATLAB基础知识

1. MATLAB简单计算

在没有定义变量名称时,数据暂存在ans中。定义变量之后,变量意义明显,计算过程一目了然。

利用Matlab可以很容易地实现函数曲线的计算和绘制。

2. 基本运算符号

Matlab进行数学处理时的优先级顺序和通常进行数学处理的优先级顺序一致。指数优先;乘、除次之;括号改变优先级,表达式从左到右依次运算。

 

3. 数值、变量及表达式

数值记述:

MATLAB的数只采用习惯的十进制表示,可以带小数点和负号,缺省了双精度浮点型数据。

例如:3 -10 0.001 1.3e10 1.1343e-6

变量命名规则:

1、变量名、函数名对字母区分大小写;

2、变量名可以包含英文字母、下划线和数字,但必须以英文字母开头;

3、变量名最多可以包含63个字符。

MATLAB预定义变量:

4. 数组

(1)数组生成

一维数组

1、  直接输入法:通过空格、逗号和分号来分隔数组元素,在数组中输入任意元素,生成一维数组。

2、步长生成法:x = a : step :b

3、等间距线型生成法:x =linspace(a,b,n),在a到b区间内生成n个采样点数据。

二维数组

1、  直接输入法,同行之间元素用逗号或空格分隔,不同行之间用分号分隔。

2、  调用内置函数,如zeros,ones,rand等。

3、低维数组转换,通过reshape,cat等函数将低维数组转换成高维数组。

(2)数组寻访

a=[1 2 3;4 5 6;7 8 9];

a(2,3) a(2,:)  a(:,1)  

a(1,1:2) a(2,1:end-1)   a(1,:)=[]  a([1,3],[2,3])

排序函数:

[As,idx] = sort(A)

[As_r,idx_r] = sortrows(A)

子数组搜索

[i,j] = find(A>0.5)

k = find(A>0.5,1)

最大最小值搜索

[mx,rx] = max(A)

[mn,rx] = min(A)

三、编程基础

1. 流程控制

(1)for循环结构

for循环结构中,需要设定一定的循环条件,Matlab根据设定的循环次数执行循环体内的命令。

for x = array

     commands

end

其中,x是循环变量,array是条件数组,commands是要执行的循环代码。循环体的执行次数由array决定。

%for循环结构示例

for n = 10 : -1 : 1

   x(n) = sin(n * pi / 5);

end

x

array = ceil(rand(1,10) * 10);

for n = array

   x(n) = sin(n * pi / 5);

end

x

(2)while循环结构

while循环结构对循环体进行无限次的循环运算,直到循环体满足循环结束条件,或达到一定的循环次数后终止。

while expression

     commands

end

其中,expression是条件表达式,一般情况下,expression的计算结果是一个标量,但也可以是一个数组表达式。当标量结果为true时,循环体一直被执行下去;当expression的结果是一个数组时,只有当数组中所有元素均为true时,循环体才会被执行。

%while循环结构示例

%求浮点数eps的精度

EPS = 1;

num = 0;

while (EPS + 1 ) > 1

   EPS = EPS / 2;

   num = num + 1;

end

num

EPS = EPS * 2

(3) if判断结构

if判断结构

      根据某一给定的条件,来进行判断以执行不同的命令。

if-else-end判断结构

      处理判断条件为true或false时,分别执行不同的命令行。

if expression

     commands

end

if expression

     commands1

else

     commands2

end

当expression包含多条子逻辑表达式时,Matlab采用“避绕式”计算各表达式,例如(expression1 | expression2),当计算expression1为false才会计算expression2.

%if判断结构示例

%求一元二次方程a*x^2 + b*x +c = 0的根

a = 2; b = 3; c = 5;

delta = b^2 - 4*a*c;

if delta > 0

   x1 = (-b+sqrt(delta))/(2*a)

   x2 = (-b-sqrt(delta))/(2*a)

elseif delta == 0

   x1 = (-b+sqrt(delta))/(2*a)

else

   real_a = -b/(2*a);

   imag_b = sqrt(abs(delta)) / (2*a);

   x1 = real_a - imag_b*i

   x2 = real_a + imag_b*i

end

2. 控制命令

在编写Matlab的M文件时,常常用到各种流程控制结构,这些流程结构执行过程中,常常需要提前终止循环、跳出子程序等操作,需要使用控制语句来实现,这里主要介绍常用的continue和break语句。

continue命令主要用在循环语句中,提前结束循环体的本次操作,将continue直接放在循环控制体内,以配合if判断语句使用。

break命令和continue命令一样都用在循环结构中,当执行break命令时,程序跳出循环结构,转移到循环之外的下一条语句。

continue命令使程序跳转到循环的end语句处,结束一次循环,而break命令使程序跳出break所在的循环体。

%continue break控制语句示例

%计算浮点数eps的精度

EPS = 1;

for n = 1:1000

   EPS = EPS / 2;

   if (1 + EPS ) >1

       continue

   end

   EPS = EPS * 2;

   break;

end

EPS

3. 程序向量化概念

向量化处理时Matlab的一个特殊概念,程序向量化是指用向量化语句来代替循环结构,因为向量化处理,数据是提前分配好内存的,所以运行速度要快很多。

程序向量化举例

计算某个数组每个元素的平方,采用向量化和循环结构两种方法实现。

%循环结构

for i = 1:100

   s1(i) = i^2;

end

%向量化处理

s2 = [1:100].^2;

%循环结构

tic

num_max = 1000000;

for i = 1:num_max

   s1(i) = i^2;

end

toc

%向量化处理

tic

s2 = [1:num_max].^2;

toc

4. 逻辑数组和向量化

Matlab除了基本的数值数据类型和字符串之外,逻辑数据也是一种数据类型。逻辑数据可以通过关系和逻辑表达式来创建,也可以通过logical命令来创建逻辑数组。

逻辑数组在向量化的过程中,有非常重要的作用,我们可以通过使用逻辑数组来完成向量化的过程。

%循环结构

tic

num_max = 1000000;

for i = 1:num_max

   if i < 500000

       s1(i) = i^2;

   else

       s1(i) = i;

   end

end

toc

%向量化处理

tic

a = 1:num_max;

s2 = a(a<500000).^2;

toc

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

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

相关文章

2023.05.14 学习周报

文章目录 摘要文献阅读1.题目2.现存问题和解决方法3.RUM4.本文贡献5.模型框架5.1 Memory enhanced user embedding5.2 Prediction function5.3 Item-level RUM5.4 feature-level RUM 6.实验6.1 数据集6.2 测量准则6.3 基线6.4 实验结果 7.结论与展望 灰色预测有限元法1. 第一类…

【图像基础知识】常见图像格式

文章目录 1 简介2 RGB3 BGR4 YUV4.1 YUV常见格式4.2 YUV420详解4.3 NV12 5 Gray6 图像格式之间的转换7 参考链接 原文来自于地平线开发者社区&#xff0c;未来会持续发布深度学习、板端部署的相关优质文章与视频&#xff0c;如果文章对您有帮助&#xff0c;麻烦给点个赞&#x…

基于趋动云部署秋葉aaaki的Stable Diffusion整合包v4--linux版

B站大V秋葉aaaki的Stable Diffusion整合V4版发布了&#xff0c;集成度比较高&#xff0c;在windows下解压缩直接就可以使用&#xff0c;整合的非常好。但是笔人没有RTX4090这样级别的显卡&#xff0c;又希望有个高速运行的效果。 所以索性到云GPU主机上来用秋叶aaaki的Stable …

1.环境搭建

1.Windows 系统GolangVisual Studio CodeMicrosoft Windows (x86-64)go1.20.1.windows-amd64.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (x86-i386)go1.20.1.windows-386.msihttps://code.visualstudio.com/DownloadMicrosoft Windows (ARM64)go1.20.1.win…

《疯狂Java讲义》读书笔记4

初始化块 是构造器的补充&#xff0c;在构造器之前执行。 是一段固定的代码&#xff0c;不接受任何参数。 构造器其实是一个假象&#xff0c;编译Java类后&#xff0c;初始化块会消失&#xff0c;当中的代码被还原到构造器中&#xff0c;且位于构造器前面。 静态初始化块 用…

springboot+vue家政服务管理平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家政服务管理平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

R语言相关系数的可视化

R相关系数的可视化 文章目录 R相关系数的可视化[toc]1、序列自相关2、序列偏自相关3、简单相关4、相关图可视化5、不同方法6、其他一些修饰 1、序列自相关 自相关是指同一时间序列在不同时间 t t t上取值的相关程度&#xff0c;假设时间序列 { X t } t 1 T \{X_t\}_{t1}^{T} …

电子电气架构——车载以太网防火墙

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本文主要分享关于车用基础软件的内核和中间件核心技术—虚拟化的典型应用案例。 车辆内部的以太网网络是一个相对封闭的环境,没有因特网那么复杂。由于车辆…

[LeetCode周赛复盘] 第 345 场周赛20230514

[LeetCode周赛复盘] 第 345 场周赛20230514 一、本周周赛总结6430. 找出转圈游戏输家1. 题目描述2. 思路分析3. 代码实现 6431. 相邻值的按位异或1. 题目描述2. 思路分析3. 代码实现 6433. 矩阵中移动的最大次数1. 题目描述2. 思路分析3. 代码实现 6432. 统计完全连通分量的数…

多核与多处理器的区别

一、定义 多核&#xff1a;单块CPU上面能处理数据的芯片组的数量&#xff0c;比如&#xff0c;双核就是包括2个相对独立的CPU核心单元组&#xff0c;四核就包含4个相对独立的CPU核心单元组。 多处理器&#xff1a;主板上实际插入的cpu数量&#xff0c;一般有两个或者多个处理…

AutoSar之DaVinci开发环境

文章目录 前言一、AutoSar架构简介二、开发环境组成1.DaVinci Developer2.DaVinci Configurator3.SIP 总结 前言 作为初学者&#xff0c;接触AutoSar的开发&#xff0c;除了需要掌握基本的AutoSar架构知识外&#xff0c;还需要熟悉设计和配置AutoSar的工具链。接下来我会以Vec…

ChatGPT在小红书文案实践

今天聊一聊ChatGPT在小红书这个实际应用场景的案例。ChatGPT 以较低的门槛提高了使用者创作水平&#xff0c;有较高的下限&#xff0c;但如何创造更高质量的内容就要依靠使用者在领域的能力和AI使用技巧&#xff0c;作者无任何小红书推广和文案写作经验&#xff0c;文章内容来自…

【MySQL】C语言连接数据库

在使用数据库的时候&#xff0c;我们是操作客户端方的&#xff0c;向服务器请求数据。MySQL的端口号-3306 连接mysql需要头文件&#xff1a;#include<mysql/mysql.h> 基础连接步骤&#xff1a; 1.创建连接句柄 MYSQL mysql_con;//连接句柄 2.初始化连接句柄mysql_i…

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令

LabVIEWCompactRIO 开发指南18 使用网络流发送消息和命令 默认情况下&#xff0c;网络流旨在最大化吞吐量&#xff0c;但可以轻松实现它们以最大化发送命令或消息的低延迟。 为本部分提供LabVIEW示例代码 命令发送器体系结构 命令发送器是CompactRIO控制器必须响应的任何命…

如何构建“Buy Me a Coffee”DeFi dApp

&#x1f978; 本教程来自官网&#xff1a;https://docs.alchemy.com/docs。对原文部分内容进行了修改。教程中所有实例经过本人实践&#xff0c;代码可见&#xff1a;https://github.com/ChuXiaoYi/web3Study 区块链技术令人惊叹&#xff0c;因为它使我们能够使用代码和软件编…

【Linux初阶】进程地址空间 | CUP与可执行程序的交互原理

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;计算机空间初识&#xff08;子进程变量修改实验&#xff09;&#xff0c;感性理解进程虚拟地址空间&#xff0…

Web自动化测试工具大对决:细致比较Selenium、Protractor和Cypress

目录 前言&#xff1a; Selenium Protractor Cypress 结论 Web自动化测试步骤结构图&#xff1a; 前言&#xff1a; 随着Web应用程序的广泛使用&#xff0c;Web自动化测试工具的需求也越来越高。Web自动化测试工具可以模拟用户在Web浏览器中的行为&#xff0c;并且可以快…

NICE-SLAM学习

NICE-SLAM简介&#xff1a; 是浙大和ETH提出的一种神经隐式SLAM方法主要创新点在于解决了基于传统nerf的方案如imap无法应用在较大场景的问题。 关于该工程的前身和当前领域的主要研究现状见&#xff1a;&#xff08;知乎&#xff1a;秦通&#xff09;基于神经辐射场的&#…

接口自动化测试-Pytest核心固件Fixture详解以及应用实战

目录 前言&#xff1a; 一、Fixture概述 二、Fixture分类 在Pytest中&#xff0c;Fixture可以分为4类&#xff1a; 三、Fixture使用 下面结合实例说明如何使用Fixture。 3.1 session级别的Fixture 3.2 module级别的Fixture 3.3 function级别的Fixture 3.4 class级别的F…

2023.5.13前端设计

SpringbootVue架构设计&#xff08;一&#xff09; 项目中的文件来自B站视频&#xff08;程序员青戈&#xff09; https://www.bilibili.com/video/BV1U44y1W77D 前端设计 assets 文件夹通常用于存放静态资源文件&#xff0c;例如图像、CSS、字体等。components 文件夹通常用…