MATLAB基础:变量、数组与矩阵操作
1. 变量(Variables)
1.1 变量的创建与赋值
-
在 MATLAB 中,变量(variable) 是一个具名的存储位置,用于保存数据或值。
-
创建变量时,可直接在命令行输入
变量名 = 值
:matlaba = 2
若不希望立即显示结果,可在语句末尾加分号
;
:matlabb = 5;
-
通过
input(prompt)
可以与用户交互,从命令行输入值并赋给变量:matlabc = input("Enter your age: ");
1.2 编辑与删除变量
-
在 Workspace(工作区) 浏览器可以直接查看和编辑当前工作区中的变量。
-
使用
clear 变量名
可以删除指定的变量:matlabclear c d
-
使用
clear
(不带任何参数)可以删除工作区中的所有变量。
1.3 变量命名规则
-
变量名必须 以字母开头,后面可以跟数字、字母或下划线
_
。 -
MATLAB 对大小写敏感,
A
和a
表示不同的变量。 -
MATLAB 关键字(如
if
,end
,for
等)不可用作变量名,可通过iskeyword
查看所有关键字:matlabiskeyword
-
MATLAB 对变量名的最大长度有限制,可使用
namelengthmax
查看。
2. 工作区变量的保存与载入
-
工作区中的变量不会在 MATLAB 退出后自动保留。如需在下次会话中继续使用,可保存到
.mat
文件中。 -
保存所有当前变量:
matlabsave datafile_full
-
保存部分变量:
matlabsave datafile_partial x y
-
载入
.mat
文件:matlabload datafile_full
-
仅加载其中部分变量:
matlabload datafile_full y z
3. 数组与矩阵
MATLAB 中所有变量本质上都是 数组,即包含一个或多个元素的容器。常见类型包括:
- 向量(Vector):一维数组,行向量或列向量。
- 矩阵(Matrix):二维数组,含 mm 行和 nn 列。
- 标量(Scalar):1×11 \times 1 的数组。
3.1 创建向量与矩阵
-
标量:
matlabx = 2;
-
行向量:
matlaby = [1 2 3 4 5];
-
列向量:
matlabz = [1; 2; 3; 4; 5];
-
矩阵:
matlabA = [1 2 3; 4 5 6; 7 8 9];
3.2 使用冒号 :
和 linspace
创建向量
-
冒号运算符:
start:step:end
matlab1:10 % 生成从1到10, 步长为1 5:3:30 % 生成从5到30, 步长为3
-
linspace(start, end, n)
:生成从start
到end
间均匀分布的n
个点(默认 100 个点若不指定 n)。matlablinspace(3, 15, 50);
3.3 常用矩阵创建函数
ones(m,n)
:创建 m×n 的全 1 矩阵。zeros(m,n)
:创建 m×n 的全 0 矩阵。eye(n)
:创建 n×n 的单位矩阵。rand(m,n)
:创建 m×n 的 [0,1] 间均匀分布随机数矩阵。randi([imin,imax],m,n)
:创建 m×n 的介于[imin, imax]
范围内的随机整数矩阵。magic(n)
:创建 n×n 的幻方矩阵(各行、列及主对角线数字之和相同)。
4. 数组大小与基本操作
4.1 查看数组大小
size(A)
:若 A 为矩阵,返回[行数 列数]
。[Arow, Acol] = size(A)
:分别获得行数和列数。length(X)
:返回向量的长度,或矩阵最大维度的大小。numel(X)
:数组中元素总数。
4.2 最大最小值
max(A)
:向量时返回最大值,矩阵时分别返回各列最大值。min(A)
:向量时返回最小值,矩阵时分别返回各列最小值。[mVal, idx] = max(A)
:mVal
为最大值,idx
为最大值的下标。
4.3 查找元素的下标
-
find(X < 5)
:返回X
中所有满足< 5
条件的线性索引。 -
逻辑索引(Logical Indexing):
matlabA(A>10)
会直接返回所有大于 10 的元素。
5. MATLAB 中的索引与操作
5.1 普通索引
v(k)
:向量第 k 个元素。A(i,j)
:矩阵第 i 行 j 列元素。A(end)
:最后一个元素。A(:,2)
:提取所有行、第 2 列。A(2,:)
:提取第 2 行、所有列。- 可以使用
:
获取连续下标区间,也可直接用向量[1,3,5]
指定非连续下标。
5.2 线性索引(Linear Indexing)
-
使用单个下标访问矩阵元素时,MATLAB 会将矩阵的列顺次排成一列。
matlabA(:) A(4) % 先按列扫描
5.3 动态改变数组大小
-
赋值给超出范围的下标会自动扩展数组。
matlabA(10,10) = 99; % 自动扩展到 10x10
注意:频繁扩展较大的数组会造成内存浪费,建议先初始化数组尺寸。
6. 数组与矩阵运算
6.1 矩阵运算(Matrix Operations)
- 矩阵加减:
A + B
,A - B
,维度必须相同。 - 矩阵乘法:
A * B
,要求前者列数与后者行数相同。
6.2 数组运算(Array Operations)
-
元素逐个运算,用
.*
,./
,.^
等带点号运算符。matlabA.*B A./B A.^2
-
当 行列数可兼容 时,会发生自动扩展(隐式扩展或广播)以完成逐元素运算。
6.3 与标量的运算
A + 3
,A - 2
,A .* 2
,A * 2
(后者是标准的矩阵乘法,但因为 2 是标量,效果与A.*2
相同)。- 可以混用,比如
2.*A
、A./2
等。
7. 常用内置函数
abs(X)
:绝对值sin(X), cos(X), tan(X)
:三角函数exp(X)
:指数log(X)
:自然对数sqrt(X)
:平方根ceil(X), floor(X), round(X)
:向上取整、向下取整、四舍五入sum(X)
:对向量元素求和,或对矩阵每列求和prod(X)
:对向量元素做连乘积,或对矩阵每列连乘积
8. MATLAB 基础数据类型
-
默认数值类型为 double(双精度浮点数)。
-
其他数值类型包括:
single
,int8
,int16
,int32
,int64
,uint8
等。 -
若要查看某个变量的类型,可使用
matlabwhos a class(a)
-
ones()
和zeros()
等函数默认返回类型为double
。
9. 小结
Lecture 1 主要介绍了 MATLAB 的基础操作和概念,包括:
- 变量与工作区 的创建、编辑、保存和清理。
- 数组(矩阵)创建 方法(如直接输入、冒号运算符、
linspace
、ones
、zeros
等)。 - 索引操作(普通索引、线性索引、逻辑索引)。
- 基础矩阵与数组运算(矩阵加减乘、逐元素运算、最大最小值及查找)。
- MATLAB 数据类型 概述及常用内置函数。
通过掌握这些基础技能,就能初步进行 MATLAB 中的数值计算与简单数据处理,为后续更深入的编程与应用奠定了基础。