当前位置: 首页 > article >正文

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 数值类型

类型示例说明
double3.14双精度浮点数(默认)
singlesingle(3.14)单精度浮点数
int8int8(100)8位有符号整数
uint8uint8(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 在科学计算和工程分析中的强大能力!


http://www.kler.cn/a/584886.html

相关文章:

  • uniapp上传文件问题以及返回上一页出现退出app的问题记录
  • Flutter_学习记录_video_player、chewie 播放视频
  • 80.Dictionary 字典 C#例子
  • 数据库学习笔记
  • CSS3 用户界面设计指南
  • Go执行当前package下的所有方法
  • 微信小程序校园跑腿的设计与实现【lw+源码+部署+视频+讲解】
  • SpringBoot使用Logback日志框架与综合实例
  • 在 WSL中批量执行InSAR任务-stackSentinel.py
  • 【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
  • 嵌入式裸机设计--MCU常用裸机架构有哪些?
  • 面试之《实现Event Bus》
  • Qt 驾校考试系统项目实现
  • OSPF-2 邻接建立关系
  • 软件工程概述、软件过程模型、逆向工程(高软45)
  • 2025探索短剧行业新可能报告40+份汇总解读|附PDF下载
  • 【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
  • java-正则表达式
  • 【从零开始学习计算机科学】数据库系统(四)数据库的物理设计
  • Golang |* 和