• MATLAB 向量和矩阵


    ✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
    🍎个人主页:小嗷犬的博客
    🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
    🥭本文内容:MATLAB 向量和矩阵



    输入数组

    MATLAB 中的每个数值变量都是一个数组,单个称为标量的数值实际上是一个 1×1 数组,也即它包含 11 列。

    我们可以用方括号[]来创建包含多个元素的数组:

    >> x = [2 3 4]
    x =
         2     3     4
    
    • 1
    • 2
    • 3

    这样我们能够得到一个包含元素234数组,也即一个包含元素234行向量

    我们可以通过分号;来区分数组中的不同行:

    >> x = [2 3 4;5 6 7]
    x =
         2     3     4
         5     6     7
    
    • 1
    • 2
    • 3
    • 4

    这样我们能够得到一个2×3数组,第一行包含元素234,第二行包含元素567


    创建等间距向量

    有的时候,我们会需要一些包含等间距数值的向量,如:

    >> x = [2 3 4]
    x =
         2     3     4
    
    • 1
    • 2
    • 3

    当需要的数值量更多时,我们需要写成这样:

    >> x = [2 3 4 5 6 7 8 9 10 11 12]
    x =
         2     3     4     5     6     7     8     9    10    11    12
    
    • 1
    • 2
    • 3

    这显然是十分不便的,MATLAB 为我们创建等间距向量提供了更简便的写法。

    通过间距创建等间距向量

    我们可以用冒号运算符:生成一个等间距的向量:

    >> x = 2:12
    x =
         2     3     4     5     6     7     8     9    10    11    12
    
    • 1
    • 2
    • 3

    仅指定起始值最终值来生成一个等间距的向量,同时注意,使用冒号运算符时,不需要方括号

    冒号运算符:使用的默认间距为 1,我们也可以手动指定间距:

    >> x = 2:2:12
    x =
         2     4     6     8    10    12
    
    • 1
    • 2
    • 3

    这样表示以 2 为起始值,以 2 为间距,以 12 为最终值生成一个等间距的向量,等价于:

    >> x = [2 4 6 8 10 12]
    x =
         2     4     6     8    10    12
    
    • 1
    • 2
    • 3

    通过元素数目创建等间距向量

    如果我们知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数:

    linspace(first,last,number_of_elements)
    
    • 1

    创建一个以 1 开头,以 10 结尾,共包含 5 个元素的行向量:

    >> x = linspace(1,10,5)
    x =
         1.0000    3.2500    5.5000    7.7500   10.0000
    
    • 1
    • 2
    • 3

    等间距列向量

    上面的两个方法都可以创建等间距向量,但它们创建出的向量都是行向量,如何得到等间距的列向量呢?

    MATLAB 为我们提供了转置运算符 ' 来将一个向量进行转置。

    通过转置,我们就可以用上面的方法生成等间距的列向量了:

    >> x = 2:2:12
    x =
         2     4     6     8    10    12
    
    >> x = x'
    x =
         2
         4
         6
         8
        10
        12
    
    >> y = linspace(1,10,5)
    y =
         1.0000    3.2500    5.5000    7.7500   10.0000
    
    >> y = y'
    y =
         1.0000
         3.2500
         5.5000
         7.7500
        10.0000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    我们也可以在创建时就进行转置,此时我们使用圆括号()来指定运算的顺序:

    >> x = (2:2:12)'
    x =
         2
         4
         6
         8
        10
        12
    
    >> y = (linspace(1,10,5))'
    y =
         1.0000
         3.2500
         5.5000
         7.7500
        10.0000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    数组创建函数

    MATLAB 包含许多函数,可帮助我们创建常用的矩阵,如 rand 函数:

    >> x = rand(2)
    x =
        0.1234    0.5678
        0.9012    0.3456
    
    • 1
    • 2
    • 3
    • 4

    这里 x 将会是一个 2×2 的随机数矩阵。

    rand 函数提供两个参数,来分别指定它的行数和列数:

    >> x = rand(2,3)
    x =
        0.1234    0.5678    0.9012
        0.3456    0.7890    0.1234
    
    • 1
    • 2
    • 3
    • 4

    这里 x 将会是一个 2×3 的随机数矩阵。

    其他的数组创建函数也具有相同的用法:

    >> x = zeros(4)
    x = 
        0    0    0    0
        0    0    0    0
        0    0    0    0
        0    0    0    0
    
    >> y = ones(6, 3)
    y =
        1   1   1
        1   1   1
        1   1   1
        1   1   1
        1   1   1
        1   1   1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这里的 xy 分别是一个 4×4 的全0矩阵和一个 6×3 的全1矩阵。

    size 函数能够得到现有矩阵的大小:

    >> x = [1 2 3;4 5 6]
    x =
        1    2    3
        4    5    6
    
    >> size(x)
    ans =
        2    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    我们可以借助 size 函数来生成与现有矩阵大小相同的矩阵:

    >> x = [1 2 3;4 5 6]
    x =
        1    2    3
        4    5    6
    
    >> y = rand(size(x))
    y =
        0.1234    0.5678    0.9012
        0.3456    0.7890    0.1234
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    创建和合并数组的函数

    函数说明
    zeros(m,n)创建一个 m×n 的全0矩阵
    ones(m,n)创建一个 m×n 的全1矩阵
    rand(m,n)创建一个 m×n 的随机数矩阵
    randn(m,n)创建一个 m×n 的标准正态分布随机数矩阵
    ture(m,n)创建一个 m×n 的全true矩阵
    false(m,n)创建一个 m×n 的全false矩阵
    eye(n)创建一个 n×n 的单位矩阵
    diag(v)创建一个对角矩阵,对角线上的元素为向量 v
    diag(v,k)创建一个对角矩阵,对角线上的元素为向量 v,对角线的偏移量为 k
    blkdiag(A,B,…)创建一个由矩阵 A、B、… 组成的分块对角矩阵
    linspace(a,b,n)创建一个从 a 到 b 的等差数列,包含 n 个元素
    logspace(a,b,n)创建一个从 10^a 到 10^b 的等比数列,包含 n 个元素
    cat(dim,A,B,…)沿着维度 dim 将矩阵 A、B、… 连接起来
    vertcat(A,B,…)沿着第一维将矩阵 A、B、… 连接起来
    horzcat(A,B,…)沿着第二维将矩阵 A、B、… 连接起来
    repelem(A,m,n)创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 中的元素的重复
    repmat(A,m,n)创建一个 m×n 的矩阵,其中每个元素都是矩阵 A 的重复

    确定数组大小、形状和排序的函数

    函数说明
    length(x)返回向量 x 的长度
    size(x)返回矩阵 x 的大小
    size(x,dim)返回矩阵 x 在维度 dim 上的大小
    ndims(x)返回矩阵 x 的维数
    numel(x)返回矩阵 x 中元素的个数
    isscalar(x)判断 x 是否是标量
    issorted(x)判断向量 x 是否是有序的
    issortedrows(x)判断矩阵 x 的行是否是有序的
    isvector(x)判断 x 是否是向量
    ismatrix(x)判断 x 是否是矩阵
    isrow(x)判断 x 是否是行向量
    iscolumn(x)判断 x 是否是列向量
    isempty(x)判断 x 是否为空
  • 相关阅读:
    SpringBoot Web 分层解耦
    如何正确停止线程?为什么 volatile 标记位的停止方法是错误的?
    BootStrap在Vue中的安装使用详细教程
    解析网络和协程
    基于全志H3的QT5.12.9移植教程
    创新案例分享 | 建设排污许可证后执法监管系统,完善当地生态环境数据资源
    Swift-day 2
    一文看懂推荐系统:排序03:预估分数融合
    风控数据(模型)不扎心,只因好这道流水工序上的处理技巧
    【EF Core】主从实体关系与常见实体关系的区别
  • 原文地址:https://blog.csdn.net/qq_63585949/article/details/127466490