迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

MATLAB 对角矩阵

作者:迹忆客 最近更新:2023/03/19 浏览次数:

在本篇文章中,我们将讨论如何使用 MATLAB 中的 diag()spdiags() 函数制作对角矩阵。

在 MATLAB 中使用 diag() 函数制作对角矩阵

要制作对角矩阵或获取矩阵的对角线元素,可以在 MATLAB 中使用 diag() 函数。例如,让我们根据给定的向量制作对角矩阵。请参见下面的代码。

vector = [1 2 3 4 5];
diagonal = diag(vector)

输出:

diagonal =

     1     0     0     0     0
     0     2     0     0     0
     0     0     3     0     0
     0     0     0     4     0
     0     0     0     0     5

在上面的代码中,我们制作了一个 5x5 对角矩阵,其中对角线元素存储在变量 vector 中。diag() 函数根据给定向量内存在的元素数量创建一个方阵。如果元素的数量为 5,则对角矩阵将为 5x5。你也可以通过在 diag() 函数内使用第二个参数来更改对角线的位置。如果第二个参数等于 0,则向量将放置在主对角线上。如果第二个参数大于 0,则向量将放置在主对角线上方。如果第二个参数小于 0,则向量将放置在主对角线下方。例如,让我们将向量放置在主对角线上方。请参见下面的代码。

vector = [1 2 3 4 5];
diagonal = diag(vector,1)

输出:

diagonal =

     0     1     0     0     0     0
     0     0     2     0     0     0
     0     0     0     3     0     0
     0     0     0     0     4     0
     0     0     0     0     0     5
     0     0     0     0     0     0

在上面的代码中,我们创建了一个对角矩阵,其元素放置在主对角线上。如你所见,对角线的大小现在为 6x6,因为向量位于主对角线上方,并且为了确保所有元素都位于矩阵内,矩阵的大小增加了。你也可以使用 diag() 函数从矩阵获取对角线元素。例如,让我们从给定的矩阵中获取主要的对角线元素。请参见下面的代码。

vector = [1 2 3;4 5 6;7 8 9]
diagonal = diag(vector)

输出:

vector =

     1     2     3
     4     5     6
     7     8     9


diagonal =

     1
     5
     9

在上面的代码中,我们使用了 diag() 函数从给定矩阵中查找对角线元素,你可以看到该函数返回了给定矩阵的对角线元素。你也可以使用 diag() 函数中的第二个参数获取主对角线上方和下方的对角线元素,就像上面我们用来制作对角线矩阵且元素在主对角线上方的情况一样。查看此网页以获取有关 diag() 函数的更多信息。

在 MATLAB 中使用 spdiags() 函数制作对角矩阵

要制作一个具有多个对角线的对角矩阵或获取矩阵的所有对角线元素,可以在 MATLAB 中使用 spdiags() 函数。在 spdiags() 函数内部传递的第一个参数是值,第二个参数是对角线位置,第三个和第四个参数是对角矩阵的大小。例如,让我们根据给定的向量制作一个三对角矩阵。请参见下面的代码。

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

输出:

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5

在上面的代码中,我们制作了一个 5x5 三对角矩阵,其对角线元素存储在三个变量:v1v2v3 中。你可以创建任意数量的对角矩阵。你也可以使用 springs() 函数更改给定矩阵的对角线值。为此,请在第一个参数中传递新值,将值的位置作为第二个参数传递,并将要更改其值的矩阵作为第三个参数传递。例如,让我们更改上述三对角矩阵的主要对角线元素。请参见下面的代码。

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix1 = full(diagonal)

v4 = [9 9 9 9 9].';
diagonal = spdiags(v4,0,diagonal);
matrix2 = full(diagonal)

输出:

matrix1 =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


matrix2 =

     9     3     0     0     0
     2     9     3     0     0
     0     2     9     3     0
     0     0     2     9     3
     0     0     0     2     9

在上面的代码中,我们更改了 matrix1 主对角线的值。更改值,并将新矩阵保存在变量 matrix2 中。你还可以使用 spdaigs() 函数从给定的矩阵中提取所有非零对角线元素。例如,让我们提取上述矩阵的非零元素。请参见下面的代码。

v1 = [1 2 3 4 5].';
v2 = [2 2 2 2 2].';
v3 = [3 3 3 3 3].';
diagonal = spdiags([v2 v1 v3],-1:1,5,5);
matrix = full(diagonal)

diag_Values = spdiags(matrix)

输出:

matrix =

     1     3     0     0     0
     2     2     3     0     0
     0     2     3     3     0
     0     0     2     4     3
     0     0     0     2     5


diag_Values =

     2     1     0
     2     2     3
     2     3     3
     2     4     3
     0     5     3

提取给定矩阵的对角线值并将其存储在变量 diag_values 中。对角线值存储在矩阵的列中。第一个对角线元素存储在第一列中,依此类推。查看此网页以获取有关 diag() 函数的更多信息。

上一篇:MATLAB .* 运算符

下一篇:MATLAB 矩阵转置

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MATLAB 中注释多行

发布时间:2023/04/23 浏览次数:111 分类:MATLAB

可以使用注释块方法或 MATLAB 编辑器在 MATLAB 中注释多行。

MATLAB 最大索引

发布时间:2023/04/23 浏览次数:192 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 max() 函数从数组及其索引中查找最大值。

MATLAB 索引超出矩阵尺寸

发布时间:2023/04/23 浏览次数:103 分类:MATLAB

要解决索引超出矩阵索引的问题,请检查你要获取或替换数据的索引。

MATLAB 检查变量类型

发布时间:2023/04/23 浏览次数:92 分类:MATLAB

在本教程中,我们将讨论如何使用 MATLAB 中的 class() 和 whos 函数检查给定变量的类型。

MATLAB vs Octave

发布时间:2023/04/23 浏览次数:74 分类:MATLAB

我们可以说 Octave 是 MATLAB 的免费版本。

MATLAB MAT 文件

发布时间:2023/04/23 浏览次数:89 分类:MATLAB

可以使用 MAT 文件在 MATLAB 中存储和加载格式化的数据。

MATLAB asv 文件

发布时间:2023/04/23 浏览次数:180 分类:MATLAB

.asv 文件是 MATLAB 生成的自动保存文件,因此在计算机崩溃时你不会丢失数据。

MATLAB 三元运算符

发布时间:2023/04/23 浏览次数:130 分类:MATLAB

MATLAB 中没有三元运算符,因此你必须使用标准格式。

MATLAB & vs &&

发布时间:2023/04/23 浏览次数:134 分类:MATLAB

在 MATLAB 中,&是逻辑与运算符,&&也是表现出短路行为的逻辑运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便