MATLAB创建,串联和扩展矩阵

在这里插入图片描述

构建数据矩阵

如果您有一组具体的数据,可以使用方括号将这些元素排列成矩阵。一行数据的元素之间用空格或逗号分隔,行与行之间用分号分隔。例如,创建只有一行的矩阵,其中包含四个数字元素。得到的矩阵大小为 1×4,因为它有一行和四列。这种形状的矩阵通常称为行向量。

A = [12 62 93 -8]
A = 1×4

12    62    93    -8

sz = size(A)
sz = 1×2

 1     4

现在再用这些数字创建一个矩阵,但排成两行。此矩阵有两行和两列。

A = [12 62; 93 -8]
A = 2×2

12    62
93    -8

sz = size(A)
sz = 1×2

 2     2

专用矩阵函数

MATLAB 中有许多函数可以帮助您创建具有特定值或特定结构的矩阵。例如,zeros 和 ones 函数可以创建元素全部为零或全部为一的矩阵。这些函数的第一个和第二个参数分别是矩阵的行数和列数。

A = zeros(3,2)
A = 3×2

 0     0
 0     0
 0     0

B = ones(2,4)
B = 2×4

 1     1     1     1
 1     1     1     1

diag 函数将输入元素放在矩阵的对角线上。例如,创建一个行向量 A,其中包含四个元素。然后创建一个 4×4 矩阵,其对角元素是 A 的元素。

A = [12 62 93 -8];
B = diag(A)
B = 4×4

12     0     0     0
 0    62     0     0
 0     0    93     0
 0     0     0    -8

串联矩阵

您还可以使用方括号来追加现有矩阵。这种创建矩阵的方法称为串联。例如,将两个行向量串联起来,形成一个更长的行向量。

A = ones(1,4);
B = zeros(1,4);
C = [A B]
C = 1×8

 1     1     1     1     0     0     0     0

要将 A 和 B 排列为一个矩阵的两行,请使用分号。

D = [A; B]
D = 2×4

 1     1     1     1
 0     0     0     0

要串联多个矩阵,它们必须具有兼容的大小。也就是说,水平串联矩阵时,它们的行数必须相同。垂直串联矩阵时,它们的列数必须相同。

例如,创建两个都有两行的矩阵。使用方括号将第二个矩阵水平追加到第一个矩阵。

A = ones(2,3)
A = 2×3

 1     1     1
 1     1     1

B = zeros(2,2)
B = 2×2

 0     0
 0     0

C = [A B]
C = 2×5

 1     1     1     0     0
 1     1     1     0     0

串联兼容矩阵的另一种方法是使用串联函数,如 horzcat、vertcat 和 cat。使用 horzcat 将第二个矩阵水平追加到第一个矩阵。

D = horzcat(A,B)
D = 2×5

 1     1     1     0     0
 1     1     1     0     0

生成数值序列

colon 是创建由连续且等间距元素组成的矩阵的便捷方式。例如,创建一个行向量,其元素是从 1 到 10 的整数。

A = 1:10
A = 1×10

 1     2     3     4     5     6     7     8     9    10

可以使用冒号运算符创建在任何范围内以 1 为增量的数字序列。

A = -2.5:2.5
A = 1×6

-2.5000 -1.5000 -0.5000 0.5000 1.5000 2.5000

要更改序列的增量值,请在范围起始值和结束值之间指定增量值,以冒号分隔。

A = 0:2:10
A = 1×6

 0     2     4     6     8    10

要递减,请使用负数。

A = 6👎0
A = 1×7

 6     5     4     3     2     1     0

还可以按非整数值递增。如果增量值不能均分指定的范围,MATLAB 会在超出范围之前在可以达到的最后一个值处自动结束序列。

A = 1:0.2:2.1
A = 1×6

1.0000    1.2000    1.4000    1.6000    1.8000    2.0000

扩展矩阵

通过将一个或多个元素置于现有行和列索引边界之外,可以将它们添加到矩阵中。MATLAB 会自动用 0 填充矩阵,使其保持为矩形。例如,创建一个 2×3 矩阵,然后在 (3,4) 的位置插入一个元素,使矩阵增加一行一列。

A = [10 20 30; 60 70 80]
A = 2×3

10    20    30
60    70    80

A(3,4) = 1
A = 3×4

10    20    30     0
60    70    80     0
 0     0     0     1

还可以通过在现有索引范围之外插入新矩阵来扩展其大小。

A(4:5,5:6) = [2 3; 4 5]
A = 5×6

10    20    30     0     0     0
60    70    80     0     0     0
 0     0     0     1     0     0
 0     0     0     0     2     3
 0     0     0     0     4     5

要重复扩展矩阵的大小,例如在 for 循环中,最好要为预计创建的最大矩阵预分配空间。如果没有预分配空间,MATLAB 必须在每次大小增加时分配内存,因此会降低操作速度。例如,通过将矩阵的元素初始化为零,预分配一个最多容纳 10000 行和 10000 列的矩阵。

A = zeros(10000,10000);
如果之后还要预分配更多元素,可以通过在矩阵索引范围之外指定元素或将另一个预分配的矩阵与 A 串联来进行扩展。

空数组

MATLAB 中的空数组是指至少有一个维度的长度等于零的数组。空数组可用于以编程方式表示“无”的概念。例如,假设要查找一个向量中小于 0 的所有元素但没有找到。find 函数将返回一个空的索引向量,表示未找到任何小于 0 的元素。

A = [1 2 3 4];
ind = find(A<0)
ind =

1x0 empty double row vector
许多算法都包含可以返回空数组的函数调用。在这些算法中,允许将空数组作为函数参数传递,而不是作为特殊情况处理,这样通常是有帮助的。如果确实需要自定义空数组的处理方式,可以使用 函数检查它们。

TF = isempty(ind)

相关推荐

  1. matlabMatlab矩阵计算示例基础

    2024-04-25 14:14:01       57 阅读
  2. Matlab入门】 第二章 向量矩阵

    2024-04-25 14:14:01       40 阅读
  3. MATLAB 矩阵

    2024-04-25 14:14:01       27 阅读
  4. Thinkphp命令行创建repositorytransform层扩展

    2024-04-25 14:14:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 14:14:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 14:14:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 14:14:01       82 阅读
  4. Python语言-面向对象

    2024-04-25 14:14:01       91 阅读

热门阅读

  1. Debian常用命令

    2024-04-25 14:14:01       28 阅读
  2. 实时交互新篇章:WebSocket在Flutter中的应用与实践

    2024-04-25 14:14:01       40 阅读
  3. Android retrofit使用模板

    2024-04-25 14:14:01       148 阅读
  4. Qt相关开源项目总结

    2024-04-25 14:14:01       36 阅读
  5. QT5.12.12配置MSVC2017编译器环境

    2024-04-25 14:14:01       163 阅读
  6. Qt: windows下关闭系统窗体

    2024-04-25 14:14:01       38 阅读
  7. springBoot Event实现异步消费机制

    2024-04-25 14:14:01       169 阅读
  8. 富格林:警觉诱导黑幕避免亏损

    2024-04-25 14:14:01       36 阅读
  9. mybatis-plus 动态表名简易使用

    2024-04-25 14:14:01       40 阅读
  10. NX二次开发直接加载dlx(不用加载到菜单)

    2024-04-25 14:14:01       37 阅读