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:endmatlab1: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 中的数值计算与简单数据处理,为后续更深入的编程与应用奠定了基础。