第2章 MATLAB基础操作:变量与数据类型、矩阵与数组、运算符、常用数学函数

各位同学,欢迎来到MATLAB的世界。说实话,我刚开始接触MATLAB时,觉得它就是个高级计算器。但干了几年的仿真项目后,我越来越觉得——基础操作决定了你的上限。这一章,咱们就把MATLAB的“地基”打牢。

2.1 变量与数据类型——别小看这个“容器”

变量是什么?说白了,就是给数据贴个标签。你给它起个名字,它帮你存着值。

核心要点:MATLAB中变量不需要提前声明类型。你直接写 a = 5,它就自动认成double类型。

我个人习惯用有意义的变量名,比如 speed_ms 而不是 s。为什么?因为三个月后你自己回来看代码,大概率会忘记 s 是速度还是位移。

常见数据类型一览

数据类型 说明 示例
double 双精度浮点数(默认) x = 3.14
single 单精度浮点数 y = single(3.14)
int8 / int16 / int32 有符号整数 z = int8(127)
uint8 / uint16 / uint32 无符号整数 w = uint8(255)
char 字符(用单引号) c = 'Hello'
logical 逻辑值(true/false) flag = true

我曾经踩过的坑:uint8 存图像数据时,不小心做了减法运算,结果像素值直接溢出变成0。嗯,那天的图像全黑了。所以——做运算前,先确认数据类型

2.2 矩阵与数组——MATLAB的灵魂

你想想看,MATLAB的全称就是 Matrix Laboratory。矩阵操作是它的看家本领。别的语言用循环处理数组,MATLAB用一行搞定。

创建矩阵的几种方式

% 直接输入
A = [1, 2, 3; 4, 5, 6; 7, 8, 9]

% 冒号表达式
B = 1:2:10   % 从1到10,步长为2

% 全零矩阵
C = zeros(3, 4)

% 全一矩阵
D = ones(2, 5)

% 单位矩阵
E = eye(4)

% 随机矩阵
F = rand(3, 3)   % 均匀分布
G = randn(3, 3)  % 正态分布

我在项目中遇到过一个问题:需要生成一个1000×1000的矩阵,用循环赋值,结果跑了半天没出来。后来改成向量化操作,0.1秒搞定。所以——能用矩阵运算,就别用循环

矩阵索引与切片

M = [10, 20, 30; 40, 50, 60; 70, 80, 90];

% 取单个元素
M(2, 3)   % 第2行第3列 → 60

% 取整行
M(1, :)   % 第1行所有列

% 取整列
M(:, 2)   % 第2列所有行

% 取子矩阵
M(1:2, 2:3)   % 第1-2行,第2-3列

小技巧:MATLAB索引从1开始,不是0。我刚从C语言转过来时,因为这个习惯吃了不少亏。你写 M(0) 会直接报错。

2.3 运算符——别搞混了点乘和乘

运算符这块,我建议你重点关注点运算。这是MATLAB特有的,也是初学者最容易翻车的地方。

算术运算符

运算符 说明 示例
+ - 加减法 A + B
* 矩阵乘法 A * B
.* 对应元素相乘 A .* B
^ 矩阵乘方 A ^ 2
.^ 对应元素乘方 A .^ 2
/ 右除 A / B
./ 对应元素右除 A ./ B
' 转置 A'

注意:如果你想让两个矩阵的对应元素相乘,一定要用 .*。用 * 的话,MATLAB会按矩阵乘法规则算,维度不匹配就直接报错。我曾经在仿真一个控制系统时,就因为少写了一个点,结果整个系统的响应曲线完全不对。

关系与逻辑运算符

% 关系运算符:> < >= <= == ~=
a = [1, 5, 3];
b = [2, 5, 1];
a > b      % 返回 [0, 0, 1]
a == b     % 返回 [0, 1, 0]

% 逻辑运算符:& | ~
(a > 2) & (a < 6)   % 返回 [0, 1, 0]
~(a == 5)           % 返回 [1, 0, 1]

2.4 常用数学函数——工具箱里的好帮手

MATLAB内置的数学函数非常丰富。你不需要自己写sin、cos这些基础函数,直接调用就行。我建议你记住以下几类常用的:

基本初等函数

% 三角函数
sin(pi/2)    % 1
cos(0)       % 1
tan(pi/4)    % 1

% 指数与对数
exp(1)       % 2.7183
log(10)      % 自然对数
log10(100)   % 以10为底的对数 → 2

% 取整函数
floor(3.7)   % 向下取整 → 3
ceil(3.2)    % 向上取整 → 4
round(3.5)   % 四舍五入 → 4
fix(3.7)     % 向零取整 → 3

统计与矩阵函数

data = [3, 7, 2, 9, 5];

max(data)      % 最大值 → 9
min(data)      % 最小值 → 2
mean(data)     % 平均值 → 5.2
median(data)   % 中位数 → 5
sum(data)      % 总和 → 26
std(data)      % 标准差
var(data)      % 方差

% 矩阵专用
M = [1, 2; 3, 4];
det(M)         % 行列式
inv(M)         % 逆矩阵
eig(M)         % 特征值
size(M)        % 矩阵尺寸 → [2, 2]
length(M)      % 最大维度长度 → 2

我的习惯:处理数据前,先用 size()class() 看一眼数据的维度和类型。这能帮你避免很多莫名其妙的错误。

知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当作一个“地图”,学完后再回来看,会更有感觉。

MATLAB基础操作 变量与数据类型 double / single / int uint8 / char / logical 自动类型推断 命名规范建议 矩阵与数组 创建:zeros/ones/eye 冒号表达式 索引与切片 向量化操作 矩阵拼接 运算符 算术:+ - * / ^ 点运算:.* ./ .^ 关系:> < == ~= 逻辑:& | ~ 转置:' 常用数学函数 sin/cos/exp/log max/min/mean/std 矩阵专用函数 det/inv/eig/size length/reshape

好了,这一章的内容就是这些。变量、矩阵、运算符、函数——这四个东西你玩熟了,后面学Simulink建模会轻松很多。记住:基础不牢,地动山摇。别急着往后赶,先把这些代码敲一遍,感受一下MATLAB的“脾气”。


公众号:蓝海资料掘金营,微信deep3321