MATLAB 基础语法学习笔记
1. 矩阵操作
1.1 矩阵的定义与构造
在 MATLAB 中,矩阵是最基本的数据结构之一。我们可以使用方括号 []
来定义矩阵,矩阵中的元素用空格或逗号分隔,行与行之间用分号 ;
分隔。
matlab
浅色版本
%% 定义一个 3x3 矩阵
a = [1 2 3; 4 5 2; 3 2 7];
1.2 矩阵的基本操作
1.2.1 矩阵转置
矩阵的转置是将矩阵的行和列互换。在 MATLAB 中,使用单引号 '
来表示矩阵的转置。
matlab
浅色版本
b = a'; % 矩阵 a 的转置
1.2.2 将矩阵展平为单列
使用 (:)
操作符可以将矩阵展平为一列向量,按列顺序排列。
matlab
浅色版本
c = a(:); % 将矩阵 a 展平为单列
1.2.3 求逆矩阵
如果矩阵是非奇异的(即行列式不为 0),可以使用 inv
函数求其逆矩阵。逆矩阵满足 A * A^(-1) = I
,其中 I
是单位矩阵。
matlab
浅色版本
d = inv(a); % 求矩阵 a 的逆矩阵
a * d % 验证 a * d 是否等于单位矩阵
1.3 三维矩阵
MATLAB 也支持多维数组,例如三维矩阵。可以使用 zeros
、rand
、randi
和 randn
等函数来创建不同类型的三维矩阵。
matlab
浅色版本
%% 创建一个 10x5x3 的三维矩阵
e = zeros(10, 5, 3); % 初始化一个 10 行 5 列 3 层的零矩阵
% 为每一层赋值
e(:,:,1) = rand(10, 5); % 第一层:随机生成 0 到 1 之间的均匀分布
e(:,:,2) = randi(5, 10, 5); % 第二层:随机生成 1 到 5 之间的整数
e(:,:,3) = randn(10, 5); % 第三层:随机生成标准正态分布(均值为 0,方差为 1)
2. 元胞数组
元胞数组是一种可以存储不同类型数据的容器,类似于 Python 中的列表。每个元胞可以包含不同的数据类型,如数字、字符串、矩阵等。
matlab
浅色版本
%% 创建一个 1x6 的元胞数组
v = cell(1, 6); % 创建一个 1 行 6 列的元胞数组
% 为元胞数组赋值
v{2} = eye(3); % 第 2 个元胞存储一个 3x3 的单位矩阵
v{5} = magic(3); % 第 5 个元胞存储一个 3x3 的魔方矩阵
% 展示第 5 个元胞的内容
b = v{5}; % 提取第 5 个元胞的内容
disp(b);
解释:
cell(1, 6)
:创建一个 1 行 6 列的元胞数组。v{2}
:使用花括号{}
访问元胞数组中的元素。eye(3)
:生成一个 3x3 的单位矩阵。magic(3)
:生成一个 3x3 的魔方矩阵,魔方矩阵的特点是每一行、每一列以及对角线的和都相等。
3. 结构体
结构体是一种可以存储多个字段的数据类型,每个字段可以有不同的数据类型。结构体非常适合用于组织相关联的数据。
matlab
浅色版本
%% 创建一个结构体
books = struct('name', {'Machine Learning', 'Data Mining'}, ...
'price', [30, 40]);
% 访问结构体的字段
disp(books.name); % 显示所有书名
disp(books.name(1)); % 显示第一个书名(元胞数组)
disp(books.name{1}); % 显示第一个书名的内容(字符串)
disp(books.price); % 显示所有价格
disp(books.price(1)); % 显示第一本书的价格
解释:
struct
:创建一个结构体,'name'
和'price'
是结构体的字段。books.name
:访问结构体的name
字段,返回一个元胞数组。books.name{1}
:访问name
字段的第一个元素,返回字符串。books.price
:访问结构体的price
字段,返回一个数值数组。
4. 矩阵操作
4.1 矩阵的定义与构造
除了前面提到的矩阵定义方法,MATLAB 还提供了其他方式来构造矩阵。
matlab
浅色版本
%% 矩阵的定义与构造
a = [1 2 3 5 8 5 4 6]; % 定义一个 1x8 的行向量
b = 1:2:9; % 从 1 开始到 9,每次增加 2,生成 1 3 5 7 9
c = repmat(b, 3, 2); % 将 b 重复 3 行 2 列
d = ones(2, 4); % 创建一个 2x4 的全 1 矩阵
4.2 矩阵的四则运算
MATLAB 支持矩阵的加法、减法、乘法等四则运算。需要注意的是,矩阵乘法有两种形式:普通矩阵乘法 *
和对应元素相乘 .*
。
matlab
浅色版本
%% 矩阵的四则运算
a = [1 2 3 4; 5 6 7 8]; % 2x4 矩阵
b = [1 1 2 2; 2 2 1 1]; % 2x4 矩阵
c = a + b; % 矩阵加法
d = a - b; % 矩阵减法
e = a * b'; % 矩阵乘法(注意 b' 是 b 的转置)
f = a .* b; % 对应元素相乘
4.3 矩阵的下标操作
MATLAB 提供了灵活的下标操作,可以方便地访问矩阵中的特定元素或子矩阵。
matlab
浅色版本
%% 矩阵的下标操作
a = magic(5); % 生成一个 5x5 的魔方矩阵
% 访问单个元素
b = a(2, 3); % 访问第 2 行第 3 列的元素
% 访问整行或整列
c = a(3, :); % 访问第 3 行的所有元素
d = a(:, 4); % 访问第 4 列的所有元素
% 查找满足条件的元素
[m, n] = find(a > 20); % 找出大于 20 的元素的行和列索引
解释:
magic(5)
:生成一个 5x5 的魔方矩阵。a(2, 3)
:访问矩阵a
的第 2 行第 3 列的元素。a(3, :)
:访问矩阵a
的第 3 行的所有元素。a(:, 4)
:访问矩阵a
的第 4 列的所有元素。find(a > 20)
:找出矩阵a
中大于 20 的元素的行和列索引。
总结
通过这篇学习笔记,我们介绍了 MATLAB 中的基础语法,包括矩阵的定义与构造、矩阵的基本操作、元胞数组、结构体以及矩阵的下标操作。MATLAB 是一个强大的工具,尤其适合进行矩阵计算和数据分析。希望这些内容能帮助你更好地掌握 MATLAB 的基本用法。