在第三天,我们将深入探索 MATLAB 的 矩阵操作 、数组 和 字符串处理,并通过大量示例代码帮助读者掌握核心功能。
1. 等差元素向量
1.1 使用冒号运算符 :
冒号运算符 :
用于生成等间距的行向量,语法为 start:step:end
。
示例 1:默认步长(步长=1)
matlab
复制
v = 1:5; % 生成向量 [1, 2, 3, 4, 5]
disp(v); % 输出:1 2 3 4 5
示例 2:指定步长
matlab
复制
v = 0:0.5:2; % 生成向量 [0, 0.5, 1, 1.5, 2]
disp(v); % 输出:0 0.5 1 1.5 2
示例 3:反向生成
matlab
复制
v = 5:-1:1; % 生成向量 [5, 4, 3, 2, 1]
disp(v); % 输出:5 4 3 2 1
1.2 使用 linspace
函数
linspace(start, end, n)
生成包含 n
个元素的等分向量。
示例
matlab
复制
v = linspace(0, 1, 5); % 生成 [0, 0.25, 0.5, 0.75, 1]
disp(v); % 输出:0 0.25 0.5 0.75 1
2. MATLAB 矩阵
2.1 矩阵的创建
矩阵是二维数组,通过方括号 []
定义,分号 ;
分隔行。
示例
matlab
复制
A = [1 2 3;
4 5 6;
7 8 9]; % 3x3 矩阵
disp(A);
% 输出:
% 1 2 3
% 4 5 6
% 7 8 9
2.2 矩阵的加法和减法
矩阵维度必须一致,运算符为 +
和 -
。
示例
matlab
复制
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B; % 输出:[6 8; 10 12]
D = B - A; % 输出:[4 4; 4 4]
2.3 矩阵除法
-
左除
\
:求解线性方程组,如A \ B
等效于inv(A) * B
。 -
右除
/
:A / B
等效于A * inv(B)
。
示例:解方程组
matlab
复制
A = [3 2; 1 4];
B = [8; 7];
X = A \ B; % 解 AX = B,输出:X = [2; 1]
disp(X);
2.4 矩阵标量操作
标量与矩阵的每个元素进行运算。
示例
matlab
复制
A = [1 2; 3 4];
B = A + 10; % 输出:[11 12; 13 14]
C = A * 2; % 输出:[2 4; 6 8]
D = A / 2; % 输出:[0.5 1; 1.5 2]
2.5 矩阵的转置
使用单引号 '
实现转置(共轭转置),transpose()
实现非共轭转置。
示例
matlab
复制
A = [1+2i 3; 4 5];
B = A'; % 共轭转置 → [1-2i 4; 3 5]
C = transpose(A); % 非共轭转置 → [1+2i 4; 3 5]
2.6 矩阵的串联
通过方括号 []
或 cat()
函数水平或垂直拼接矩阵。
水平串联
matlab
复制
A = [1 2; 3 4];
B = [5 6; 7 8];
C = [A B]; % 输出:[1 2 5 6; 3 4 7 8]
D = cat(2, A, B); % 等效于水平拼接
垂直串联
matlab
复制
E = [A; B]; % 输出:[1 2; 3 4; 5 6; 7 8]
F = cat(1, A, B); % 等效于垂直拼接
2.7 矩阵乘法
-
矩阵乘法
*
:行乘列规则。 -
元素乘法
.*
:对应元素相乘。
示例
matlab
复制
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A * B; % 矩阵乘法 → [19 22; 43 50]
D = A .* B; % 元素乘法 → [5 12; 21 32]
2.8 矩阵的行列式
使用 det()
函数计算方阵的行列式。
示例
matlab
复制
A = [1 2; 3 4];
d = det(A); % 输出:1*4 - 2*3 = -2
disp(d); % 输出:-2
2.9 逆矩阵
使用 inv()
函数求逆矩阵,矩阵需为非奇异(行列式不为零)。
示例
matlab
复制
A = [1 2; 3 4];
A_inv = inv(A); % 逆矩阵 → [-2 1; 1.5 -0.5]
disp(A_inv);
% 验证:A * A_inv = 单位矩阵
disp(A * A_inv); % 输出近似 [1 0; 0 1]
3. MATLAB 数组
3.1 数组与矩阵的区别
数组是广义的多维数据结构,运算符(如 .*
、./
)为元素级操作。
示例
matlab
复制
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A .* B; % 元素乘法 → [5 12; 21 32]
3.2 冒号符号 :
的应用
用于索引和生成子矩阵。
示例
matlab
复制
A = [1 2 3; 4 5 6; 7 8 9];
sub1 = A(2, :); % 第2行 → [4 5 6]
sub2 = A(:, 1:2); % 前两列 → [1 2; 4 5; 7 8]
4. MATLAB 数字
4.1 数值类型
类型 | 示例 | 说明 |
---|---|---|
double |
3.14 |
双精度浮点数(默认) |
single |
single(3.14) |
单精度浮点数 |
int8 |
int8(100) |
8位有符号整数 |
uint8 |
uint8(200) |
8位无符号整数 |
4.2 特殊数值
matlab
复制
a = Inf; % 正无穷大
b = NaN; % 非数字(如 0/0)
c = pi; % 圆周率 π
5. MATLAB 字符串
5.1 字符串创建
使用单引号 '
或双引号 "
(R2016b+)。
示例
matlab
复制
str1 = 'Hello, MATLAB!';
str2 = "Hello, World!";
disp(str1); % 输出:Hello, MATLAB!
5.2 字符串操作
拼接字符串
matlab
复制
s1 = 'Hello';
s2 = 'MATLAB';
combined = [s1 ', ' s2 '!']; % 输出:Hello, MATLAB!
字符串函数
matlab
复制
str = 'MATLAB';
len = length(str); % 长度 → 6
sub = str(1:3); % 子串 → 'MAT'
upper_str = upper(str); % 大写 → 'MATLAB'
5.3 字符串比较
使用 strcmp()
或 ==
(仅适用于相同长度的字符串数组)。
示例
matlab
复制
str1 = 'apple';
str2 = 'apple';
str3 = 'banana';
result1 = strcmp(str1, str2); % 输出:1(true)
result2 = (str1 == str3); % 输出:0(false)
6. 总结与练习
6.1 核心知识点
主题 | 关键内容 |
---|---|
矩阵操作 | 加减、转置、乘法、行列式、逆矩阵 |
数组与矩阵区别 | 元素级操作与矩阵运算 |
字符串处理 | 拼接、函数应用与比较 |
6.2 练习题目
-
矩阵操作
创建矩阵
A = [2 4; 6 8]
,计算其逆矩阵并验证A * inv(A) ≈ I
。 -
字符串处理
将字符串
'MATLAB'
转换为大写,并提取子串'LAB'
。 -
数组运算
生成两个 3x3 随机矩阵,计算它们的元素级乘积。
7. 下一步学习建议
-
矩阵分解:学习 LU 分解、QR 分解等高级矩阵操作。
-
高级字符串处理:探索正则表达式和文本文件读写。
-
性能优化:使用预分配和向量化提升代码效率。
通过不断实践,你将逐步掌握 MATLAB 在科学计算和工程分析中的强大能力!