MATLAB-01-基础:变量、数组与矩阵操作

25 年 2 月 19 日 星期三
1480 字
8 分钟

MATLAB基础:变量、数组与矩阵操作

1. 变量(Variables)

1.1 变量的创建与赋值

  • 在 MATLAB 中,变量(variable) 是一个具名的存储位置,用于保存数据或值。

  • 创建变量时,可直接在命令行输入 变量名 = 值

    matlab
    a = 2

    若不希望立即显示结果,可在语句末尾加分号 ;

    matlab
    b = 5;
  • 通过 input(prompt) 可以与用户交互,从命令行输入值并赋给变量:

    matlab
    c = input("Enter your age: ");

1.2 编辑与删除变量

  • Workspace(工作区) 浏览器可以直接查看和编辑当前工作区中的变量。

  • 使用 clear 变量名 可以删除指定的变量:

    matlab
    clear c d
  • 使用 clear(不带任何参数)可以删除工作区中的所有变量。

1.3 变量命名规则

  • 变量名必须 以字母开头,后面可以跟数字、字母或下划线 _

  • MATLAB 对大小写敏感,Aa 表示不同的变量。

  • MATLAB 关键字(如 if, end, for 等)不可用作变量名,可通过 iskeyword 查看所有关键字:

    matlab
    iskeyword
  • MATLAB 对变量名的最大长度有限制,可使用 namelengthmax 查看。


2. 工作区变量的保存与载入

  • 工作区中的变量不会在 MATLAB 退出后自动保留。如需在下次会话中继续使用,可保存到 .mat 文件中。

  • 保存所有当前变量:

    matlab
    save datafile_full
  • 保存部分变量:

    matlab
    save datafile_partial x y
  • 载入 .mat 文件:

    matlab
    load datafile_full
  • 仅加载其中部分变量:

    matlab
    load datafile_full y z

3. 数组与矩阵

MATLAB 中所有变量本质上都是 数组,即包含一个或多个元素的容器。常见类型包括:

  • 向量(Vector):一维数组,行向量或列向量。
  • 矩阵(Matrix):二维数组,含 mm 行和 nn 列。
  • 标量(Scalar):1×11 \times 1 的数组。

3.1 创建向量与矩阵

  • 标量

    matlab
    x = 2;
  • 行向量

    matlab
    y = [1 2 3 4 5];
  • 列向量

    matlab
    z = [1; 2; 3; 4; 5];
  • 矩阵

    matlab
    A = [1 2 3; 4 5 6; 7 8 9];

3.2 使用冒号 :linspace 创建向量

  • 冒号运算符start:step:end

    matlab
    1:10       % 生成从1到10, 步长为1
    5:3:30     % 生成从5到30, 步长为3
  • linspace(start, end, n):生成从 startend 间均匀分布的 n 个点(默认 100 个点若不指定 n)。

    matlab
    linspace(3, 15, 50);

3.3 常用矩阵创建函数

  • ones(m,n):创建 m×n 的全 1 矩阵。
  • zeros(m,n):创建 m×n 的全 0 矩阵。
  • eye(n):创建 n×n 的单位矩阵。
  • rand(m,n):创建 m×n 的 [0,1] 间均匀分布随机数矩阵。
  • randi([imin,imax],m,n):创建 m×n 的介于 [imin, imax] 范围内的随机整数矩阵。
  • magic(n):创建 n×n 的幻方矩阵(各行、列及主对角线数字之和相同)。

4. 数组大小与基本操作

4.1 查看数组大小

  • size(A):若 A 为矩阵,返回 [行数 列数]
  • [Arow, Acol] = size(A):分别获得行数和列数。
  • length(X):返回向量的长度,或矩阵最大维度的大小。
  • numel(X):数组中元素总数。

4.2 最大最小值

  • max(A):向量时返回最大值,矩阵时分别返回各列最大值。
  • min(A):向量时返回最小值,矩阵时分别返回各列最小值。
  • [mVal, idx] = max(A)mVal 为最大值,idx 为最大值的下标。

4.3 查找元素的下标

  • find(X < 5):返回 X 中所有满足 < 5 条件的线性索引。

  • 逻辑索引(Logical Indexing):

    matlab
    A(A>10)

    会直接返回所有大于 10 的元素。


5. MATLAB 中的索引与操作

5.1 普通索引

  • v(k):向量第 k 个元素。
  • A(i,j):矩阵第 i 行 j 列元素。
  • A(end):最后一个元素。
  • A(:,2):提取所有行、第 2 列。
  • A(2,:):提取第 2 行、所有列。
  • 可以使用 : 获取连续下标区间,也可直接用向量 [1,3,5] 指定非连续下标。

5.2 线性索引(Linear Indexing)

  • 使用单个下标访问矩阵元素时,MATLAB 会将矩阵的列顺次排成一列。

    matlab
    A(:)
    A(4)  % 先按列扫描

5.3 动态改变数组大小

  • 赋值给超出范围的下标会自动扩展数组。

    matlab
    A(10,10) = 99; % 自动扩展到 10x10

注意:频繁扩展较大的数组会造成内存浪费,建议先初始化数组尺寸。


6. 数组与矩阵运算

6.1 矩阵运算(Matrix Operations)

  • 矩阵加减A + B, A - B,维度必须相同。
  • 矩阵乘法A * B,要求前者列数与后者行数相同。

6.2 数组运算(Array Operations)

  • 元素逐个运算,用 .*, ./, .^ 等带点号运算符。

    matlab
    A.*B
    A./B
    A.^2
  • 行列数可兼容 时,会发生自动扩展(隐式扩展广播)以完成逐元素运算。

6.3 与标量的运算

  • A + 3A - 2A .* 2A * 2(后者是标准的矩阵乘法,但因为 2 是标量,效果与 A.*2 相同)。
  • 可以混用,比如 2.*AA./2 等。

7. 常用内置函数

  • abs(X):绝对值
  • sin(X), cos(X), tan(X):三角函数
  • exp(X):指数
  • log(X):自然对数
  • sqrt(X):平方根
  • ceil(X), floor(X), round(X):向上取整、向下取整、四舍五入
  • sum(X):对向量元素求和,或对矩阵每列求和
  • prod(X):对向量元素做连乘积,或对矩阵每列连乘积

8. MATLAB 基础数据类型

  • 默认数值类型为 double(双精度浮点数)。

  • 其他数值类型包括:single, int8, int16, int32, int64, uint8 等。

  • 若要查看某个变量的类型,可使用

    matlab
    whos a
    class(a)
  • ones()zeros() 等函数默认返回类型为 double


9. 小结

Lecture 1 主要介绍了 MATLAB 的基础操作和概念,包括:

  1. 变量与工作区 的创建、编辑、保存和清理。
  2. 数组(矩阵)创建 方法(如直接输入、冒号运算符、linspaceoneszeros 等)。
  3. 索引操作(普通索引、线性索引、逻辑索引)。
  4. 基础矩阵与数组运算(矩阵加减乘、逐元素运算、最大最小值及查找)。
  5. MATLAB 数据类型 概述及常用内置函数。

通过掌握这些基础技能,就能初步进行 MATLAB 中的数值计算与简单数据处理,为后续更深入的编程与应用奠定了基础。

文章标题:MATLAB-01-基础:变量、数组与矩阵操作

文章作者:DWHITE

文章链接:https://dr9k69ai79.github.io/MyBlog/posts/schoolcoursesnotes/2025_02/g0123_matlab/01_matlab基础_变量数组与矩阵操作[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。