tool 2024-02-17 Matlab

MATLAB 基础语法

MATLAB 是 “matrix laboratory” 的缩写形式。其他编程语言通常一次只能处理一个数字, 而 MATLAB 则针对整个矩阵和数组进行运算处理。语言基础只是包括基本运算, 例如创建变量、数组索引、算术运算和数据类型。

MATLAB 命令行工具

在 MATLAB 中工作时,可以发出创建变量和调用函数的命令。

  • help:在命令行窗口显示指定命令的简短使用说明
# 用于查看 eig 函数的帮助文档,查询结果在命令行窗口显示
$ help eig
  • doc:以网页形式显示指定命令的帮助页,此命令显示的标准更加具体,还有各种使用举例
# 用于查看 eig 函数帮助文档,结果在单独的查看显示,比 help 显示更加完整详细
$ doc eig
  • lookfor:按指定的关键词查询与之相关的命令
# 模糊查找,比如知道某个可能的函数是 plo***,但是不知道完整的函数名称,就可以使用这个命令
$ lookfor eig
  • which:显示指定函数所在的目录
# 查找函数具体在什么位置
$ which eig
  • cd

  • dir

Matlab 数据类型

默认情况下,MATLAB 会将所有数值变量存储为双精度浮点值。 其他数据类型可在单变量中来存储文本、整数或单精度值, 或者相关数据的组合。

可以在 MATLAB 中使用许多不同的数据类型或类:

  • 可以构建浮点和整数数据、字符和字符串以及逻辑 truefalse 值等构成的矩阵与数组。
  • 函数句柄可将代码与任何 MATLAB 函数连接在一起,而与当前范围无关。
  • 表、时间表、结构体和元胞数组提供了一种将不同类型的数据存储在同一容器中的方法。

MATLAB 中有 17 个基础类。其中每个类都采用矩阵或数组的形式存在。 除了函数句柄之外,矩阵或数组的最小大小为 0×0,并且可以扩展到任意大小的 $n$ 维数组。 函数句柄始终为标量 (1x1)。

Matlab 变量

变量命名规则

Matlab 变量的命名与其他编程语言的规则相似:可以由字母、数字、下划线构成, 其中必须以字母或下划线开头,且变量名区分字母的大小写。

变量查询

  • who 显示工作空间种的所有变量
>> a = 1;
>> b = 2;
>> c = pi;
>> who
您的变量为:

a  b  c 
  • whos 查看工作空间中变量的详细属性
>> whos
Name  Size  Bytes Class  Attributes

a     1x1   8            double
b     1x1   8            double
c     1x1   8            double

系统预定义变量

  • pi:圆周率 $\pi$
  • infInf:无穷大
  • nanNaN:Not a Number,一个不定值,如 0/0
  • eps:浮点运算相对精度
  • i, j:虚部单位,通常为了避免混淆写作 1i1j
  • 特殊变量 ans:应尽量避免系统预定义变量重新赋值

变量的存储

语法:

save 文件名 变量名列表  % 变量名列表中各变量之间用空格分隔
save(文件名, 变量名1, 变量名2)

示例:

% 将变量 p 与 q 存储到文件 file1.mat 里
save 'file1.mat' p q

% 或者
save('file1.mat', 'p', 'q')

变量的读取

从数据文件中提取指定变量:

load mydata A x

变量的清除

清除当前工作空间中的变量:

% 清除指定的变量
clear A x

% 清除所有工作空间中的变量
clear all

Matlab 矩阵和数组

矩阵的定义

  • 矩阵用方括号 [] 括起
  • 矩阵同一行中的元素之间用空格或逗号分隔
  • 矩阵行与行之间用分号分开
  • 直接输入法中,分号可以用回车代替
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];

% 或者
A = [1 2 3; 4 5 6; 7 8 9];

% 或者
A = [1 2 3;
     4 5 6;
     7 8 9];

% 或者
A = [1, 2, 3;
     4, 5, 6;
     7, 8, 9];

% 或者
A = [1, 2, 3
     4, 5, 6
     7, 8, 9];

矩阵赋值操作

矩阵 A 是一个 $1 \times 2$ 矩阵,第一个元素是 1,第二个元素 2

A(1) = 1;
A(2) = 2;

大矩阵可以把小矩阵作为其元素:

A = [A; 3 4];

矩阵元素提取引用操作

单个元素的引用

  • 利用小括弧和元素所在的位置(下标)
  • A(1):向量 A 的第一个元素
  • A(i):向量 A 中的第 i 个元素
  • A(i, j):矩阵 A 中的第 i 行,第 j 列元素;

多个元素的引用

矩阵元素的引用:A(i:j, m:n) 表示由矩阵 A 的第 i 到第 j 行,和第 m 到第 n 列交叉线上的元素组成的子矩阵。 可以利用冒号 : 提取矩阵的整行或整列。

A(1, :)
A(:, 1:3)
A(:, :)

生成等差数列向量

a: b :c:产生一个由等差序列组成的向量

其中:

  • a 是首项,b 是公差,c 确定最后一项
  • b 等于 1,则 b 可以省略

建立矩阵进阶

  • 利用函数建立数值矩阵:MATLAB 提供了许多生成和操作矩阵的函数 例如: reshape 函数和 diag 函数等。
    • reshape 函数用于建立数值矩阵
    • diag 函数用于产生对角阵
x = 1:12;
y = reshape(x, 3, 4)

z = 1:4
diag(z)
  • 利用 M 文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个 M 文件
  • 矩阵的基本运算:
    • 矩阵转置:A .'
    • 矩阵共轭转置:A'
    • 矩阵加、减、乘、除
    • 矩阵的乘方:A^2

建立矩阵的函数

eye(size(A))      % 产生与 A 矩阵同阶的单位矩阵
zeros(m, n)       % 产生 0 矩阵
ones(m, n)        % 产生 1 矩阵
rand (m, n)       % 产生随机元素的矩阵
size(a)           % 返回包含两个元素的向量
length(a)         % 返回向量的长度

数组运算

  1. 数组的加、减、乘、除
  2. 数组的乘方

其他

  1. 行列式计算
det[1, 2; 3, 4];
  1. 求解线性方程组
x = A \ b
  1. 特征值问题
eig(A)

Matlab 运算符和基本运算

一般运算符

  • +
  • -
  • *
  • /, \:(右左除)
  • ^:幂运算

点乘、点除、点幂

x = [1 2 3];
y = [2 4 6];

% 输出 1*2 2*4 3*6
x.*y;

% 输出 2/1 4/2 6/3
y./x;

% 输出 1^3 2^3 3^3
x.^3; 

运算输出格式

  • Matlab 以双精度执行所有的运算,运算结果可以在屏幕上输出,同时赋给指定变量;
  • 如果未指定输出变量,MATLAB 将使用变量 ans(answer 的缩略形式)来存储计算结果;
  • Matlab 中数的输出格式可以通过 format 命令指定;format 只改变变量的输出格式,但不会影响变量的值。

Matlab 语句

语句形式

Matlab 语句的通常形式为:

变量 = 表达式;

分号和续行符的作用

  • 如果不想在命令行窗口窗口的屏幕上输出结果,可以在语句最后加上分号
  • 如果语句很长,可用续行符 ... 续行,续行符的前面最好留一个空格
a = 1  % a=1 会在命令行窗口输出
b = 1;  % 加了分号就不显示在命令行窗口
c = 123 + 456 + 789 + ...
    12345;  % 三个点换行

循环及条件语句

参考