打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
矩阵和数组 (2)

  • 6.1矩阵

    • 6.1.6复制行和列:平铺

    • 6.1.7删除行和列

    • 6.1.8初等矩阵

    • 6.1.9 特殊矩阵

    • 6.1.10使用带有矩阵的MATLAB函数

6.1矩阵

6.1.6复制行和列:平铺

有时生成一个所有行或列都相同的矩阵是有用的。这可以使用repmat函数完成,如下所示。如果a是行向量

>> clear
>> a =[1 2 3]

a =

     1     2     3

>> repmat(a, [3 1])

ans =

     1     2     3
     1     2     3
     1     2     3

在这个例子中,向量a为[1 2 3]。repmat函数用于将一个矩阵或向量重复多次,第一个参数为要重复的矩阵或向量,第二个参数为重复的次数。因此,repmat(a, [3 1])表示将向量a重复3次,每次沿着的方向重复1次。具体来说,这个语句将返回一个大小为3x3的矩阵,其中第一行为[1 2 3],第二行为[1 2 3],第三行为[1 2 3],即将向量a沿着行的方向重复了3次。

repmat还有另一种语法:

repmat(a, 31)

6.1.7删除行和列

使用冒号操作符和空数组来删除整个行或列,例如:a(:,2) = [ ]删除a的第二列。

你不能从矩阵中删除一个元素同时又保持它是一个矩阵,所以像a(1,2) = [ ]导致错误。

但是,使用单个下标符号可以从矩阵中删除元素序列,并将剩余元素重新塑造成行向量,例如,如果

>>  a =[1 2 3;4 5 6;7 8 9]

a =

     1     2     3
     4     5     6
     7     8     9

>> a(2:2:6) = [ ]

a =

     1     7     5     3     6     9

首先通过列展开a,[1  4 7 2 5 8 3 6 9], 然后删除第2、4、6个元素。得到[1     7     5     3     6     9]

还可以使用逻辑向量从矩阵中提取行或列的选择,例如,如果a是上面定义的原始3 × 3矩阵,则语句

>>  a =[1 2 3;4 5 6;7 8 9]

a =

     1     2     3
     4     5     6
     7     8     9

>> a(:, logical([1 0 1]))

ans =

     1     3
     4     6
     7     9

在这个例子中,矩阵a的大小为3x3,即3行3列。a(:, logical([1 0 1]))表示选择矩阵a的所有行,但只选择第1列和第3列。logical([1 0 1])将向量[1 0 1]转换为逻辑向量,其中1表示选择对应的列,0表示不选择。因此,这个语句将返回一个大小为3x2的矩阵,其中第一列和第三列的元素被选择,第二列的元素被排除。具体来说,返回的矩阵为:

     1     3
     4     6
     7     9

注意,逻辑向量可以用于选择矩阵的行或列,以及选择向量的元素。


6.1.8初等矩阵

初等矩阵是一种特殊的方阵,通过对单位矩阵进行一次初等行变换得到。初等行变换包括交换两行、某一行乘以一个非零常数、某一行加上另一行的若干倍。

举例来说,函数zeros、ones和rand分别生成由0、1和随机数构成的矩阵。当只有一个参数n时,它们生成n×n(方)矩阵。当有两个参数n和m时,它们生成n×m矩阵。对于非常大的矩阵,repmat函数通常比oneszeros函数更快。

函数eye(n)生成一个n×n单位矩阵,即主“对角线”上为1,其他地方为0的矩阵.

举例说明,假设我们有一个 的单位矩阵:

I = eye(3)

输出结果为:

I =

     1     0     0
     0     1     0
     0     0     1

可以使用以下函数来实现矩阵的初等变换:

  1. 交换两行

可以使用 A([i j], :) = A([j i], :) 来交换矩阵 的第 行和第 行。例如,对于一个 的矩阵

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

可以使用以下代码交换第 1 行和第 3 行:

A([1 3], :) = A([3 1], :);

输出结果为:

A =

     7     8     9
     4     5     6
     1     2     3

可以看到,我们交换了矩阵 的第 1 行和第 3 行。

  1. 某一行乘以一个非零常数

可以使用 A(i, :) = k * A(i, :) 来将矩阵 的第 行乘以一个非零常数 。例如,对于一个 的矩阵

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

可以使用以下代码将第 2 行乘以 2:

A(2, :) = 2 * A(2, :);

输出结果为:

A =

     1     2     3
     8    10    12
     7     8     9

可以看到,我们将矩阵 的第 2 行乘以了 2。

  1. 某一行加上另一行的若干倍

可以使用 A(i, :) = A(i, :) + k * A(j, :) 来将矩阵 的第 行加上第 行的 倍。例如,对于一个 的矩阵

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

可以使用以下代码将第 2 行加上第 1 行的 2 倍:

A(2, :) = A(2, :) + 2 * A(1, :);

输出结果为:

A = 
     1     2     3
     6     9    12
     7     8     9

可以看到,我们将矩阵 的第 2 行加上了第 1 行的 2 倍。

6.1.9 特殊矩阵

下面的函数可用于生成任意矩阵,当您无法自己生成矩阵运算时,可以使用这些函数来研究矩阵运算。它们是数学家发现的特殊矩阵,它们发现的动机和其他你不需要了解的细节。

函数pascal(n)可以用来生成一个大小为n×n的帕斯卡矩阵。帕斯卡矩阵是一个特殊的三角形矩阵,其第i行第j列的元素为C(i-1,j-1),其中C(i,j)表示组合数,即从i个元素中选取j个元素的组合数。帕斯卡矩阵的第一列和主对角线上的元素都为1,其余元素为前一行和前一列对应元素之和。例如,pascal(4)生成的帕斯卡矩阵为:

>> pascal(4)

ans =
     1     1     1     1
     1     2     3     4
     1     3     6    10
     1     4    10    20

magic(n) 是Matlab中的一个函数,用于生成一个 的幻方矩阵。幻方矩阵指的是在一个 的方阵内填入 的自然数,使得每行、每列和对角线上的数字之和相等。

具体来说,magic(n) 函数会生成一个 的幻方矩阵 ,其中 表示在第 行第 列的数字。例如,对于 magic(n) 的输出结果为:

>> magic(3)

     8     1     6
     3     5     7
     4     9     2

可以看到,这个 的矩阵满足每行、每列和对角线上的数字之和都等于 。具体来说,第一行的数字和为 ,第二行的数字和为 ,第三行的数字和为 ,第一列的数字和为 ,第二列的数字和为 ,第三列的数字和为 ,主对角线的数字和为 ,副对角线的数字和为

需要注意的是,幻方矩阵只存在于 时,当 时不存在幻方矩阵。

6.1.10使用带有矩阵的MATLAB函数

当一个MATLAB数学或三角函数有一个矩阵参数时,这个函数作用于矩阵的每个元素,正如你所期望的那样。然而,许多其他MATLAB函数对矩阵逐列操作,例如

>> a =[1 0 1;1 1 1;0 0 1]

a =

     1     0     1
     1     1     1
     0     0     1

>> all(a)

ans =

  1×3 logical 数组

   0   0   1

对于a中所有元素都为真(非零)的每一列,all返回1,否则返回0。因此,all在接受矩阵参数时返回一个逻辑向量。

>> all(all(a))

ans =

  logical

   0

要测试a的所有元素是否都为真,使用两次all。在这个例子中,all(all(a))返回0,因为a中的一些元素是0.

>> any(a)

ans =

  1×3 logical 数组

   1   1   1

>> any(any(a))

ans =

  logical

   1

因为a的每一列至少有一个非零元素,any(any(a))返回1,因为a本身至少有一个非零元素。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
matlab:矩阵/数组常用操作
重新学习MATLAB——相见恨晚的重要应用技巧
matlab函数大全(A-Z)
matlab学习笔记函数bsxfunrepmat
MATLAB矩阵及其运算
Matlab 之 find()函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服