MATLAB—从入门到精通的第三天

在第三天,我们将深入探索 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 练习题目

  1. 矩阵操作

    创建矩阵 A = [2 4; 6 8],计算其逆矩阵并验证 A * inv(A) ≈ I

  2. 字符串处理

    将字符串 'MATLAB' 转换为大写,并提取子串 'LAB'

  3. 数组运算

    生成两个 3x3 随机矩阵,计算它们的元素级乘积。


7. 下一步学习建议

  1. 矩阵分解:学习 LU 分解、QR 分解等高级矩阵操作。

  2. 高级字符串处理:探索正则表达式和文本文件读写。

  3. 性能优化:使用预分配和向量化提升代码效率。

通过不断实践,你将逐步掌握 MATLAB 在科学计算和工程分析中的强大能力!

相关推荐
用户845371078312 分钟前
低代码双雄对决:Joker 的「开发者革命」与美乐的「企业护城河」(2025 实战版)
前端
Run_Teenage7 分钟前
C语言每日一练——day_4
c语言·开发语言
汤姆和佩琦10 分钟前
LLMs基础学习(一)概念、模型分类、主流开源框架介绍以及模型的预训练任务
人工智能·学习·算法·分类·数据挖掘
梦里是谁N11 分钟前
以下是基于文章核心命题打造的15个标题方案,根据传播场景分类推荐
人工智能·分类·数据挖掘
崔璨11 分钟前
实现一个精简React -- 利用update函数,实现useState(9)
前端·react.js
SongYuLong的博客13 分钟前
C# WPF 串口通信
开发语言·c#·wpf
lele_ne16 分钟前
【深度学习】宠物品种分类Pet Breeds Classifier
人工智能·深度学习·分类
犀思云16 分钟前
领先AI企业经验谈:探究AI分布式推理网络架构实践
人工智能·分布式·ai网络
shengjk117 分钟前
数据湖的背景、现状与未来
人工智能·后端