MATLAB - 快速指南


MATLAB - 概述

MATLAB(矩阵实验室)是第四代高级编程语言和交互式环境,用于数值计算、可视化和编程。

MATLAB 由 MathWorks 开发。

它允许矩阵操作;绘制函数和数据;算法的实现;创建用户界面;与其他语言编写的程序交互,包括 C、C++、Java 和 FORTRAN;分析数据;开发算法;并创建模型和应用程序。

它具有许多内置命令和数学函数,可帮助您进行数学计算、生成绘图和执行数值方法。

MATLAB 的计算数学能力

MATLAB 应用于计算数学的各个方面。以下是一些最常用的数学计算 -

  • 处理矩阵和数组
  • 2-D 和 3-D 绘图和图形
  • 线性代数
  • 代数方程
  • 非线性函数
  • 统计数据
  • 数据分析
  • 微积分和微分方程
  • 数值计算
  • 一体化
  • 变换
  • 曲线拟合
  • 其他各种特殊功能

MATLAB 的特点

以下是 MATLAB 的基本功能 -

  • 它是一种用于数值计算、可视化和应用程序开发的高级语言。

  • 它还为迭代探索、设计和解决问题提供了一个交互式环境。

  • 它提供了庞大的数学函数库,用于线性代数、统计、傅里叶分析、过滤、优化、数值积分和求解常微分方程。

  • 它提供用于可视化数据的内置图形和用于创建自定义绘图的工具。

  • MATLAB 的编程接口提供了用于提高代码质量、可维护性和最大化性能的开发工具。

  • 它提供了用于构建具有自定义图形界面的应用程序的工具。

  • 它提供了将基于 MATLAB 的算法与外部应用程序和语言(例如 C、Java、.NET 和 Microsoft Excel)集成的功能。

MATLAB 的用途

MATLAB 被广泛用作科学和工程领域的计算工具,涵盖物理、化学、数学和所有工程流领域。它用于一系列应用,包括 -

  • 信号处理和通信
  • 图像和视频处理
  • 控制系统
  • 测试与测量
  • 计算金融
  • 计算生物学

MATLAB - 环境设置

本地环境设置

只需点击几下鼠标即可设置 MATLAB 环境。安装程序可以从这里下载。

MathWorks 还提供许可产品、试用版和学生版。您需要登录该网站并等待他们的批准。

下载安装程序后,只需单击几下即可安装软件。

MATLAB在线安装

安装中

了解 MATLAB 环境

MATLAB 开发 IDE 可以从桌面上创建的图标启动。MATLAB 中的主工作窗口称为桌面。当 MATLAB 启动时,桌面以其默认布局显示 -

MATLAB 桌面

桌面有以下面板 -

  • 当前文件夹- 此面板允许您访问项目文件夹和文件。

  • 当前文件夹
  • 命令行窗口- 这是可以在命令行输入命令的主要区域。它由命令提示符 (>>) 指示。

  • 命令窗口
  • 工作区- 工作区显示从文件创建和/或导入的所有变量。

  • 工作空间
  • 命令历史记录- 此面板显示或返回在命令行输入的命令。

  • 命令历史

设置 GNU Octave

如果您愿意在您的计算机(Linux、BSD、OS X 或 Windows)上使用 Octave,请从下载 GNU Octave下载最新版本。您可以检查为您的机器提供的安装说明。

MATLAB - 基本语法

MATLAB 环境的Behave就像一个超级复杂的计算器。您可以在 >> 命令提示符处输入命令。

MATLAB 是一个解释环境。换句话说,您发出一个命令,MATLAB 会立即执行它。

动手实践

输入有效的表达式,例如,

5 + 5

然后按 ENTER 键

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

ans = 10

让我们再举几个例子 -

3 ^ 2	       % 3 raised to the power of 2

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

ans = 9

另一个例子,

sin(pi /2)	  % sine of angle 90o

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

ans = 1

另一个例子,

7/0		      % Divide by zero

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

ans = Inf
warning: division by zero

另一个例子,

732 * 20.3	

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

ans =  1.4860e+04

MATLAB 为某些数学符号提供了一些特殊的表达式,例如 pi 代表 π、Inf 代表 Infini、i(和 j)代表 √-1 等。Nan代表“不是数字”。

在 MATLAB 中使用分号 (;)

分号 (;) 表示语句结束。但是,如果您想要抑制并隐藏表达式的 MATLAB 输出,请在表达式后面添加分号。

例如,

x = 3;
y = x + 5

当您单击“执行”按钮或键入 Ctrl+E 时,MATLAB 会立即执行它,返回的结果为 -

y =  8

添加评论

百分号(%)用于指示注释行。例如,

x = 9	     % assign the value 9 to x

您还可以使用块注释运算符 % { 和 % } 编写注释块。

MATLAB 编辑器包括工具和上下文菜单项,可帮助您添加、删除或更改注释的格式。

常用运算符和特殊字符

MATLAB 支持以下常用运算符和特殊字符 -

操作员 目的
+ 加; 加法运算符。
- 减; 减法运算符。
* 标量和矩阵乘法运算符。
.* 数组乘法运算符。
^ 标量和矩阵求幂运算符。
.^ 数组求幂运算符。
\ 左除运算符。
/ 右除运算符。
.\ 数组左除运算符。
./ 数组右除运算符。
冒号; 生成规则间隔的元素并表示整行或整列。
( ) 括号; 包含函数参数和数组索引;覆盖优先级。
[ ] 括号; 封装数组元素。
小数点。
…… 省略; 行继续运算符
, 逗号; 分隔行中的语句和元素
; 分号; 分隔列并抑制显示。
% 百分号;指定注释并指定格式。
_ 引用符号和转置运算符。
._ 非共轭转置运算符。
= 赋值运算符。

特殊变量和常量

MATLAB 支持以下特殊变量和常量 -

姓名 意义
答案 最近的答案。
每股收益 浮点精度的准确性。
我,j 虚数单位√-1。
信息 无穷。
未定义的数值结果(不是数字)。
圆周率 数字 π

命名变量

变量名称由一个字母后跟任意数量的字母、数字或下划线组成。

MATLAB 区分大小写

变量名称可以是任意长度,但是,MATLAB 仅使用前 N 个字符,其中 N 由函数namelengthmax给出。

保存您的工作

save命令用于将工作区中的所有变量保存为当前目录中扩展名为 .mat 的文件。

例如,

save myfile

您可以稍后使用load命令重新加载该文件。

load myfile

MATLAB - 变量

在 MATLAB 环境中,每个变量都是数组或矩阵。

您可以通过简单的方式分配变量。例如,

x = 3	       % defining x and initializing it with a value

MATLAB 将执行上述语句并返回以下结果 -

x = 3

它创建一个名为x的 1×1 矩阵,并将值 3 存储在其元素中。让我们看另一个例子,

x = sqrt(16) 	% defining x and initializing it with an expression

MATLAB 将执行上述语句并返回以下结果 -

x = 4

请注意 -

  • 将变量输入系统后,您可以稍后引用它。

  • 变量在使用之前必须有值。

  • 当表达式返回未分配给任何变量的结果时,系统会将其分配给名为 ans 的变量,以便稍后使用。

例如,

sqrt(78)

MATLAB 将执行上述语句并返回以下结果 -

ans =  8.8318

您可以使用此变量ans -

sqrt(78);
9876/ans

MATLAB 将执行上述语句并返回以下结果 -

ans =  1118.2

让我们看另一个例子 -

x = 7 * 8;
y = x * 7.89

MATLAB 将执行上述语句并返回以下结果 -

y =  441.84

多项作业

您可以在同一行上进行多个作业。例如,

a = 2; b = 7; c = a * b

MATLAB 将执行上述语句并返回以下结果 -

c = 14

我忘记了变量!

who命令显示您使用的所有变量名称。

who

MATLAB 将执行上述语句并返回以下结果 -

Your variables are:
a    ans  b    c   

whos命令显示有关变量的更多信息-

  • 当前内存中的变量
  • 每个变量的类型
  • 分配给每个变量的内存
  • 它们是否是复杂变量
whos

MATLAB 将执行上述语句并返回以下结果 -

Attr Name        Size        Bytes      Class
==== ====        ====        ====       ===== 
   a             1x1           8        double
   ans           1x70         757        cell
   b             1x1           8        double
   c             1x1           8        double

Total is 73 elements using 781 bytes     

清除命令从内存中删除所有(或指定的)变量。

clear x     % it will delete x, won't display anything
clear       % it will delete all variables in the workspace
            %  peacefully and unobtrusively 

长作业

长赋值可以通过使用省略号 (...) 扩展到另一行。例如,

initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time

MATLAB 将执行上述语句并返回以下结果 -

final_velocity = 196

格式命令

默认情况下,MATLAB 显示具有四位小数值的数字。这称为短格式

但是,如果您想要更高的精度,则需要使用format命令。

format long命令显示小数点后 16 位。

例如 -

format long
x = 7 + 10/3 + 5 ^ 1.2

MATLAB 将执行上述语句并返回以下结果 -

x = 17.2319816406394

另一个例子,

format short
x = 7 + 10/3 + 5 ^ 1.2

MATLAB 将执行上述语句并返回以下结果 -

x = 17.232

formatbank命令数字四舍五入到小数点后两位。例如,

format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6

MATLAB 将执行上述语句并返回以下结果 -

weekly_wage = 1064.70

MATLAB 使用指数表示法显示大数。

format Short e命令允许以指数形式显示,具有四位小数加指数。

例如,

format short e
4.678 * 4.9

MATLAB 将执行上述语句并返回以下结果 -

ans = 2.2922e+01

format long e命令允许以指数形式显示,具有四位小数加指数。例如,

format long e
x = pi

MATLAB 将执行上述语句并返回以下结果 -

x = 3.141592653589793e+00

格式rat命令给出了计算结果最接近的有理表达式。例如,

format rat
4.678 * 4.9

MATLAB 将执行上述语句并返回以下结果 -

ans = 34177/1491 

创建向量

向量是一维数字数组。MATLAB 允许创建两种类型的向量 -

  • 行向量
  • 列向量

行向量是通过将元素集括在方括号中并使用空格或逗号分隔元素来创建的。

例如,

r = [7 8 9 10 11]

MATLAB 将执行上述语句并返回以下结果 -

r =

   7    8    9   10   11 

另一个例子,

r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t

MATLAB 将执行上述语句并返回以下结果 -

res =

         9         11         13         15         17

列向量是通过将元素集括在方括号中并使用分号 (;) 来分隔元素来创建的。

c = [7;  8;  9;  10; 11]

MATLAB 将执行上述语句并返回以下结果 -

c =
       7       
       8       
       9       
      10       
      11  

创建矩阵

矩阵是二维数字数组。

在 MATLAB 中,通过将每一行输入为空格或逗号分隔元素的序列来创建矩阵,行尾以分号分隔。例如,让我们创建一个 3×3 矩阵:

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

MATLAB 将执行上述语句并返回以下结果 -

m =
       1              2              3       
       4              5              6       
       7              8              9       

MATLAB - 命令

MATLAB 是一个用于数值计算和数据可视化的交互式程序。您可以通过在命令行窗口的MATLAB 提示符“>>”处键入命令来输入命令。

在本节中,我们将提供常用的通用 MATLAB 命令列表。

用于管理会话的命令

MATLAB 提供了各种用于管理会话的命令。下表提供了所有此类命令 -

命令 目的
CLC 清除命令窗口。
清除 从内存中删除变量。
存在 检查文件或变量是否存在。
全球的 将变量声明为全局变量。
帮助 搜索帮助主题。
寻找 搜索关键字的帮助条目。
辞职 停止 MATLAB。
WHO 列出当前变量。
谁是 列出当前变量(长显示)。

使用系统的命令

MATLAB 提供了各种有用的命令来使用系统,例如将工作区中的当前工作保存为文件并稍后加载该文件。

它还为其他与系统相关的活动提供各种命令,例如显示日期、列出目录中的文件、显示当前目录等。

下表显示了一些常用的系统相关命令 -

命令 目的
光盘 更改当前目录。
日期 显示当前日期。
删除 删除一个文件。
日记 打开/关闭日记文件记录。
目录 列出当前目录中的所有文件。
加载 从文件加载工作区变量。
小路 显示搜索路径。
密码 显示当前目录。
节省 将工作区变量保存在文件中。
类型 显示文件的内容。
什么 列出当前目录中的所有 MATLAB 文件。
读取 读取 .wk1 电子表格文件。

输入和输出命令

MATLAB 提供以下输入和输出相关命令 -

命令 目的
显示 显示数组或字符串的内容。
扫描仪 从文件中读取格式化数据。
格式 控制屏幕显示格式。
打印函数 对屏幕或文件执行格式化写入。
输入 显示提示并等待输入。
; 抑制丝网印刷。

fscanf和fprintf命令的Behave类似于 C scanf 和 printf 函数它们支持以下格式代码 -

格式代码 目的
%s 格式化为字符串。
%d 格式为整数。
%F 格式为浮点值。
%e 以科学记数法表示的浮点值格式。
%G 以最紧凑的形式格式化:%f 或 %e。
\n 在输出字符串中插入新行。
\t 在输出字符串中插入制表符。

格式函数具有以下用于数字显示的形式 -

格式化功能 显示最多
格式短 四位十进制数字(默认)。
格式长 16 位十进制数字。
格式短 e 五位数加指数。
格式化长e 16 位数字加指数。
格式库 两位小数。
格式+ 正数、负数或零。
格式鼠 有理近似。
格式紧凑 抑制某些换行。
格式松散 重置为不太紧凑的显示模式。

矢量、矩阵和数组命令

下表显示了用于处理数组、矩阵和向量的各种命令 -

命令 目的
连接数组。
寻找 查找非零元素的索引。
长度 计算元素数量。
林空间 创建规则间隔的向量。
日志空间 创建对数间隔向量。
最大限度 返回最大元素。
分钟 返回最小元素。
产品 每列的乘积。
重塑 改变尺寸。
尺寸 计算数组大小。
种类 对每一列进行排序。
对每列求和。
眼睛 创建单位矩阵。
那些 创建一个由 1 组成的数组。
零点 创建一个零数组。
计算矩阵叉积。
计算矩阵点积。
德特 计算数组的行列式。
投资 计算矩阵的逆。
品v 计算矩阵的伪逆。
计算矩阵的秩。
参考文献 计算简化的行梯形形式。
细胞 创建元胞数组。
细胞显示 显示元胞数组。
细胞图 显示元胞数组的图形表示。
单元格数量 将数值数组转换为元胞数组。
交易 匹配输入和输出列表。
伊塞尔 识别元胞数组。

绘图命令

MATLAB 提供了许多用于绘制图形的命令。下表显示了一些常用的绘图命令 -

命令 目的
设置轴限制。
绘图 智能绘制函数。
网格 显示网格线。
Plotly 生成 xy 图。
打印 打印绘图或将绘图保存到文件中。
标题 将文本置于图的顶部。
标签 向 x 轴添加文本标签。
标签 向 y 轴添加文本标签。
创建轴对象。
关闭 关闭当前绘图。
关闭所有 关闭所有绘图。
数字 打开一个新的图形窗口。
文字 启用通过鼠标放置标签。
抓住 冻结当前Plotly。
传奇 通过鼠标放置图例。
刷新 重绘当前图形窗口。
指定对象的属性,例如轴。
次要Plotly 在子窗口中创建绘图。
文本 将字符串放入图中。
酒吧 创建条形图。
日志日志 创建双对数图。
极性 创建极坐标图。
半对数 创建半对数图。(对数横坐标)。
符号学 创建半对数图。(对数纵坐标)。
楼梯 创建楼梯图。
创建茎图。

MATLAB - M 文件

到目前为止,我们已经使用了 MATLAB 环境作为计算器。然而,MATLAB 也是一种功能强大的编程语言,以及交互式计算环境。

在前面的章节中,您学习了如何从 MATLAB 命令提示符输入命令。MATLAB 还允许您将一系列命令写入文件并将该文件作为完整单元执行,就像编写函数并调用它一样。

M档案

MATLAB 允许编写两种程序文件 -

  • 脚本- 脚本文件是扩展名为 .m的程序文件。在这些文件中,您编写一系列要一起执行的命令。脚本不接受输入,也不返回任何输出。他们对工作区中的数据进行操作。

  • 函数- 函数文件也是带有.m 扩展名的程序文件。函数可以接受输入并返回输出。内部变量是函数的局部变量。

您可以使用 MATLAB 编辑器或任何其他文本编辑器来创建.m文件。在本节中,我们将讨论脚本文件。脚本文件包含多行连续的 MATLAB 命令和函数调用。您可以通过在命令行中键入脚本名称来运行脚本。

创建并运行脚本文件

要创建脚本文件,您需要使用文本编辑器。您可以通过两种方式打开 MATLAB 编辑器 -

  • 使用命令提示符
  • 使用IDE

如果您使用命令提示符,请在命令提示符中键入edit 。这将打开编辑器。您可以直接输入edit,然后输入文件名(扩展名为 .m)

edit 
Or
edit <filename>

上面的命令将在默认的 MATLAB 目录中创建该文件。如果您想将所有程序文件存储在特定文件夹中,则必须提供完整路径。

让我们创建一个名为 progs 的文件夹。在命令提示符 (>>) 处键入以下命令 -

mkdir progs    % create directory progs under default directory
chdir progs    % changing the current directory to progs
edit  prog1.m  % creating an m file named prog1.m

如果您是第一次创建该文件,MATLAB 会提示您确认。单击“是”。

创建脚本文件

或者,如果您使用 IDE,请选择“新建”->“脚本”。这也会打开编辑器并创建一个名为 Untitled.txt 的文件。您可以在键入代码后命名并保存文件。

在编辑器中输入以下代码 -

NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
   + NonTeachingStaff;
disp(Total);

创建并保存文件后,您可以通过两种方式运行它 -

  • 单击编辑器窗口上的“运行”按钮或

  • 只需在命令提示符中输入文件名(不带扩展名): >> prog1

命令窗口提示符显示结果 -

6170

例子

创建一个脚本文件,然后键入以下代码 -

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

当上面的代码被编译并执行时,它会产生以下结果 -

c =  12
d =  12.657
e =  63.285
f =    3.1852e-06

MATLAB - 数据类型

MATLAB 不需要任何类型声明或维度声明。每当 MATLAB 遇到新的变量名时,它都会创建该变量并分配适当的内存空间。

如果变量已存在,则 MATLAB 会用新内容替换原始内容,并在必要时分配新的存储空间。

例如,

Total = 42

上面的语句创建一个名为“Total”的 1×1 矩阵,并在其中存储值 42。

MATLAB 中可用的数据类型

MATLAB 提供 15 种基本数据类型。每种数据类型都以矩阵或数组的形式存储数据。该矩阵或数组的大小最小为 0×0,并且可以增长到任何大小的矩阵或数组。

下表显示了 MATLAB 中最常用的数据类型 -

先生。 数据类型和描述
1

整型8

8 位有符号整数

2

uint8

8 位无符号整数

3

整型16

16 位有符号整数

4

uint16

16 位无符号整数

5

整型32

32 位有符号整数

6

uint32

32 位无符号整数

7

整型64

64 位有符号整数

8

uint64

64 位无符号整数

9

单身的

单精度数值数据

10

双倍的

双精度数值数据

11

逻辑的

逻辑值1或0,分别代表true和false

12

字符

字符数据(字符串存储为字符向量)

13

单元阵列

索引单元数组,每个索引单元能够存储不同维度和数据类型的数组

14

结构

类似 C 的结构,每个结构都具有能够存储不同维度和数据类型的数组的命名字段

15

函数句柄

指向函数的指针

16

用户类别

从用户定义的类构造的对象

17 号

java类

从 Java 类构造的对象

例子

使用以下代码创建脚本文件 -

str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)

当上面的代码被编译并执行时,它会产生以下结果 -

str = Hello World!
n =  2345
d =  2345
un = 790
rn = 5678.9
c =  5679

数据类型转换

MATLAB 提供了各种将值从一种数据类型转换为另一种数据类型的函数。下表显示了数据类型转换函数 -

功能 目的
字符 转换为字符数组(字符串)
int2str 将整数数据转换为字符串
mat2str 将矩阵转换为字符串
数字2str 将数字转换为字符串
str2双 将字符串转换为双精度值
字符串2号 将字符串转换为数字
原生2unicode 将数字字节转换为 Unicode 字符
unicode2native 将 Unicode 字符转换为数字字节
基数2dec 将 N 基数字符串转换为十进制数
bin2dec 将二进制数字字符串转换为十进制数字
十进制数据库 将字符串中的小数转换为以 N 为基数的数字
十进制2bin 将字符串中的十进制数转换为二进制数
十进制 将字符串中的十进制数转换为十六进制数
十六进制2dec 将十六进制数字字符串转换为十进制数字
十六进制数 将十六进制数字字符串转换为双精度数字
十六进制数 将单打和双打转换为 IEEE 十六进制字符串
细胞2垫 将元胞数组转换为数值数组
细胞2结构体 将元胞数组转换为结构体数组
细胞因子 从字符数组创建字符串元胞数组
mat2cell 将数组转换为具有可能不同大小的单元格的单元格数组
单元格数量 将数组转换为单元格大小一致的单元格数组
结构2单元 将结构体转换为元胞数组

数据类型的确定

MATLAB 提供了各种函数来识别变量的数据类型。

下表提供了用于确定变量数据类型的函数 -

功能 目的
检测状态
伊萨 确定输入是否是指定类的对象
伊塞尔 判断输入是否为元胞数组
iscellstr 确定输入是否为字符串元胞数组
伊斯查尔 判断item是否为字符数组
伊斯菲尔德 判断输入是否为结构体数组字段
是浮动的 判断输入是否为浮点数组
什甘德尔 对于 Handle Graphics 对象句柄为 True
是整数 判断输入是否为整数数组
是java 判断输入是否是Java对象
不合逻辑的 判断输入是否为逻辑数组
是数字的 判断输入是否为数值数组
对象 确定输入是否为 MATLAB 对象
是真实的 检查输入是否是真实数组
是标量 确定输入是否为标量
伊斯特 判断输入是否为字符数组
结构体 判断输入是否为结构体数组
向量 判断输入是否为向量
班级 确定对象的类别
验证属性 检查数组的有效性
谁是 列出工作区中的变量,包括大小和类型

例子

使用以下代码创建脚本文件 -

x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
 
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

当您运行该文件时,它会产生以下结果 -

x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =

          1          2          3

ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0

MATLAB - 运算符

运算符是告诉编译器执行特定数学或逻辑操作的符号。MATLAB 旨在主要对整个矩阵和数组进行操作。因此,MATLAB 中的运算符既可以处理标量数据,也可以处理非标量数据。MATLAB 允许以下类型的基本运算 -

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 按位运算
  • 设置操作

算术运算符

MATLAB 允许两种不同类型的算术运算 -

  • 矩阵算术运算
  • 数组算术运算

矩阵算术运算与线性代数中的定义相同。数组操作是在一维和多维数组上逐个元素执行的。

矩阵运算符和数组运算符通过句点 (.) 符号进行区分。但是,由于矩阵和数组的加法和减法运算相同,因此两种情况的运算符相同。下表给出了运算符的简要描述 -

显示示例

先生。 运算符及描述
1

+

加法或一元加法。A+B 将变量 A 和 B 中存储的值相加。A 和 B 必须具有相同的大小,除非其中一个是标量。标量可以添加到任意大小的矩阵中。

2

-

减法或一元减法。AB 从 A 中减去 B 的值。A 和 B 必须具有相同的大小,除非其中一个是标量。可以从任意大小的矩阵中减去标量。

3

*

矩阵乘法。C = A*B 是矩阵 A 和 B 的线性代数积。更准确地说,

矩阵乘法

对于非标量 A 和 B,A 的列数必须等于 B 的行数。标量可以与任意大小的矩阵相乘。

4

.*

数组乘法。A.*B 是数组 A 和 B 的逐元素乘积。A 和 B 必须具有相同的大小,除非其中之一是标量。

5

/

斜杠或矩阵右除。B/A 与 B*inv(A) 大致相同。更准确地说,B/A = (A'\B')'。

6

./

数组右除。A./B 是包含元素 A(i,j)/B(i,j) 的矩阵。A 和 B 必须具有相同的大小,除非其中之一是标量。

7

\

反斜杠或矩阵左除。如果 A 是方阵,则 A\B 与 inv(A)*B 大致相同,只是计算方式不同。如果 A 是 n×n 矩阵,B 是具有 n 个分量的列向量,或具有多个此类列的矩阵,则 X = A\B 是方程AX = B的解。如果 A 缩放不当或接近奇异,则会显示警告消息。

8

.\

数组左除。A.\B 是包含元素 B(i,j)/A(i,j) 的矩阵。A 和 B 必须具有相同的大小,除非其中之一是标量。

9

^

矩阵功率。如果 p 是标量,则 X^p 是 X 的 p 次方。如果 p 是整数,则通过重复平方计算幂。如果整数为负数,则先将 X 取反。对于 p 的其他值,计算涉及特征值和特征向量,因此如果 [V,D] = eig(X),则 X^p = V*D.^p/V。

10

.^

阵列功率。A.^B 是包含元素 A(i,j) 的 B(i,j) 次方的矩阵。A 和 B 必须具有相同的大小,除非其中之一是标量。

11

'

矩阵转置。A' 是 A 的线性代数转置。对于复数矩阵,这是复共轭转置。

12

.'

数组转置。A。' 是 A 的数组转置。对于复数矩阵,这不涉及共轭。

关系运算符

关系运算符还可以处理标量和非标量数据。数组的关系运算符在两个数组之间执行逐个元素的比较,并返回相同大小的逻辑数组,其中关系为 true 时元素设置为逻辑 1 (true),关系为 true 时元素设置为逻辑 0 (false)不是。

下表显示了 MATLAB 中可用的关系运算符 -

显示示例

先生。 运算符及描述
1

<

少于

2

<=

小于或等于

3

>

比...更棒

4

>=

大于或等于

5

==

等于

6

〜=

不等于

逻辑运算符

MATLAB 提供两种类型的逻辑运算符和函数 -

  • Element-wise - 这些运算符对逻辑数组的相应元素进行操作。

  • 短路 - 这些运算符对标量和逻辑表达式进行操作。

按元素逻辑运算符对逻辑数组逐个元素进行运算。符号 &、| 和 ~ 是逻辑数组运算符 AND、OR 和 NOT。

短路逻辑运算符允许逻辑运算短路。符号 && 和 || 是逻辑短路运算符 AND 和 OR。

显示示例

按位运算

位运算符作用于位并执行逐位运算。&、| 和 ^ 的真值表如下 -

p q 质与问 p| q p^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

假设A = 60;B=13;现在以二进制格式,它们将如下 -

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

〜A = 1100 0011

MATLAB 提供了各种按位运算函数,例如“按位与”、“按位或”和“按位非”运算、移位运算等。

下表显示了常用的按位运算 -

显示示例

功能 目的
位和(a, b) 整数ab的按位与
位CMP(一) a的按位补码
bitget(a,pos) 获取整数数组a中指定位置pos的位
比托尔(a,b) 整数ab的按位或
位集(a,位置) 在a的特定位置pos设置位
位移位(a,k) 返回a向左移动k位,相当于乘以 2 k。k 的负值对应于右移位或除以 2 |k| 并向负无穷四舍五入到最接近的整数。任何溢出位都会被截断。
位异或(a,b) 整数ab的按位异或
交换字节 交换字节顺序

设置操作

MATLAB 提供了各种集合运算函数,例如并集、交集和集合成员资格测试等。

下表显示了一些常用的集合运算 -

显示示例

先生。 功能说明
1

相交(A,B)

设置两个数组的交集;返回 A 和 B 共有的值。返回的值按排序顺序排列。

2

相交(A,B,'行')

将 A 的每一行和 B 的每一行视为单个实体,并返回 A 和 B 共有的行。返回矩阵的行按排序顺序排列。

3

是成员(A,B)

返回一个与 A 大小相同的数组,如果 A 的元素在 B 中找到,则包含 1 (true)。否则,它返回 0 (false)。

4

ismember(A,B,'行')

将 A 的每一行和 B 的每一行视为单个实体,并返回一个包含 1 (true) 的向量,其中矩阵 A 的行也是 B 的行。在其他情况下,它返回 0 (false)。

5

什锦(A)

如果 A 的元素按排序顺序返回逻辑 1 (true),否则返回逻辑 0 (false)。输入 A 可以是向量或 N×1 或 1×N 字符串元胞数组。如果 A和 sort(A) 的输出相等,则认为 A 已排序。

6

分类(A,'行')

如果二维矩阵 A 的行已排序,则返回逻辑 1 (true),否则返回逻辑 0 (false)。如果 A和 sortrows(A) 的输出相等,则认为矩阵 A 已排序。

7

设置差异(A,B)

设置两个数组的差异;返回 A 中 B 中没有的值。返回数组中的值按排序顺序排列。

8

setdiff(A,B,'行')

将 A 的每一行和 B 的每一行视为单个实体,并返回 A 中不在 B 中的行。返回矩阵的行按排序顺序排列。

'rows' 选项不支持元胞数组。

9

塞克斯或

设置两个数组的异或

10

联盟

设置两个数组的并集

11

独特的

数组中的唯一值

MATLAB - 决策

决策结构要求程序员指定程序要评估或测试的一个或多个条件,以及如果条件被确定为真则要执行的一条或多条语句,以及可选的如果条件成立则要执行的其他语句。条件被确定为假。

以下是大多数编程语言中典型决策结构的一般形式 -

MATLAB 中的决策语句

MATLAB 提供以下类型的决策语句。单击以下链接查看其详细信息 -

先生。 声明及说明
1 if ... 结束语句

if ... end 语句由一个布尔表达式后跟一个或多个语句组成。

2 if...else...结束语句

if语句后面可以跟一个可选的else 语句,该语句在布尔表达式为 false 时执行。

3 if...elseif...elseif...else...end 语句

if语句后面可以跟一个(或多个)可选的elseif...和一个else语句这对于测试各种条件非常有用。

4 嵌套 if 语句

您可以在另一个ifelseif语句中使用一个ifelseif语句。

5 switch语句

switch语句允许测试变量是否与值列表相等

6 嵌套 switch 语句

您可以在另一个switch语句中使用一个switch语句。

MATLAB - 循环类型

可能存在这样的情况:您需要多次执行一段代码。一般来说,语句是按顺序执行的。首先执行函数中的第一条语句,然后执行第二条语句,依此类推。

编程语言提供了各种控制结构,允许更复杂的执行路径。

循环语句允许我们多次执行一条语句或一组语句,以下是大多数编程语言中循环语句的一般形式 -

循环架构

MATLAB 提供以下类型的循环来处理循环要求。单击以下链接查看其详细信息 -

先生。 循环类型和描述
1 while 循环

当给定条件为真时,重复一个语句或一组语句。它在执行循环体之前测试条件。

2 for循环

多次执行一系列语句并缩写管理循环变量的代码。

3 嵌套循环

您可以在任何另一循环内使用一个或多个循环。

循环控制语句

循环控制语句改变其正常顺序的执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。

MATLAB 支持以下控制语句。单击以下链接查看其详细信息。

先生。 控制语句和描述
1 中断语句

终止循环语句并将执行转移到紧接着循环后面的语句。

2 继续声明

导致循环跳过其主体的其余部分并在重复之前立即重新测试其条件。

MATLAB - 向量

向量是一维数字数组。MATLAB 允许创建两种类型的向量 -

  • 行向量
  • 列向量

行向量

行向量是通过将元素集括在方括号中并使用空格或逗号分隔元素来创建的。

r = [7 8 9 10 11]

MATLAB 将执行上述语句并返回以下结果 -

r =

   7    8    9   10   11 

列向量

列向量是通过将元素集括在方括号中并使用分号分隔元素来创建的。

c = [7;  8;  9;  10; 11]

MATLAB 将执行上述语句并返回以下结果 -

c =
      7       
      8       
      9       
      10       
      11