MATLAB 基础语法学习笔记(一)

79 阅读5分钟

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 也支持多维数组,例如三维矩阵。可以使用 zerosrandrandirandn 等函数来创建不同类型的三维矩阵。

matlab
浅色版本
%% 创建一个 10x5x3 的三维矩阵
e = zeros(10, 5, 3);  % 初始化一个 1053 层的零矩阵

% 为每一层赋值
e(:,:,1) = rand(10, 5);  % 第一层:随机生成 01 之间的均匀分布
e(:,:,2) = randi(5, 10, 5);  % 第二层:随机生成 15 之间的整数
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 的基本用法。