文件帮助中心文件
提取非零对角线并创建稀疏带和对角矩阵
bout = spdiags(a)
[Bout,ID] = spdiags(a)
bout = spdiags(a,d)
S = spdiags(本·d m, n)
s = spdiags(bin,d,a)
例子
布特= spdiags (一种)从中提取非零对角线m——- - - - - -N矩阵一种并将它们作为列返回分钟(m, n)——- - - - - -P.矩阵布特,在那里P.为非零对角线的数目。
布特= spdiags (一种)
布特
一种
m
N
分钟(m, n)
P.
[布特那ID) = spdiags (一种)也返回对角线号码ID对于非零对角线一种.的大小布特是分钟(m, n)——- - - - - -长度(ID).
[布特那ID) = spdiags (一种)
ID
长度(ID)
布特= spdiags (一种那D.)提取对角线一种由此指定D.并将其作为列返回它们分钟(m, n)——- - - - - -长度(d)矩阵布特.
布特= spdiags (一种那D.)
D.
长度(d)
S.= spdiags (箱那D.那m那N)创造一个m——- - - - - -N稀疏矩阵S.通过取列箱并将它们沿对角线放置D..
S.= spdiags (箱那D.那m那N)
S.
箱
S.= spdiags (箱那D.那一种)替换对角线一种由此指定D.用列箱.
S.= spdiags (箱那D.那一种)
全部收缩
使用三个向量创建一个三角形矩阵,更改一些矩阵对角线,然后提取对角线。
创建一个9乘1的1向量,然后使用这个向量创建一个三对角矩阵。查看矩阵元素。
n = 9;e =那些(n,1);a = spdiags([e -2 * e], - 1:1,n,n);全(a)
ans =.9×9.2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 2
更改主要值(d = 0)对角一种.
d = 0
bin = abs( - (n-1)/ 2:(n-1)/ 2)';d = 0;a = spdiags(bin,d,a);全(a)
ans =.9×9.4 1 1 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 2 1 0 0 0 0 0 0 0 3 1 0 0 0 0 0 0 0 1 4
最后,恢复了对角线一种作为矩阵中的列。
布特= spdiags(一个);全部(轮)
ans =.9×31 4 0 1 3 1 11 2 11 1 1 1 1 0 1 11 1 11 11 2 1 1 3 1 0 4 1
提取矩阵的非零对角线并检查输出格式spdiags.
spdiags
创建一个包含非零和零对角线混合的矩阵。
A = [0 5 0 10 0 0 0 6 0 11 0 3 0 0 7 0 12 1 4 0 0 8 0 0 2 5 0 0 9];
从矩阵中提取非零对角线。指定两个输出以返回对角线数。
布特[d] = spdiags (A)
布特=5×4.0 0 5 10 0 0 6 11 0 3 7 12 1 4 8 0 2 5 9 0
d =4×1-3 -2 1 3
第一个输出的列布特包含的非零对角线一种.第二个输出D.的非零对角线的索引一种.最长的非零对角线一种是第3列布特.提供所有列布特等长,其它非零对角线一种在相应的列中添加额外的零布特.为m——- - - - - -N矩阵与M ,规则是:
M ,规则是:
对于非零对角线以下主要对角线一种,额外的0加在最高额列的(如…的前两列布特)。
对于非零对角线以上主要对角线一种,额外的0加在底部列的(如在的最后一列布特)。
spdiags垫布特以这种方式使用0,即使最长的对角线没有返回布特.
创建一个5乘5的随机矩阵。
一个=兰迪(10、5、5)
A =5×59 1 2 2 7 10 3 10 5 1 2 6 10 10 9 10 10 5 8 10 7 10 9 10 10 7
提取主对角线,以及它上方和下方的第一对角线。
d = [-1 0 1];bout = spdiags(a,d)
布特=5×310 9 0 6 3 1 5 10 10 10 8 10 0 7 10
尝试提取第五个超对角线(d = 5)。因为一种只有四个超级对角线,spdiags将对角线返回为与main (d = 0)对角线。
d = 5
B5 = spdiags (5)
B5 =5×10 0 0 0 0
检查如何spdiags当输入矩阵的列长于它们正在替换的对角线时,创建对角线。
创建数字1到6的6×7矩阵。
Bin = repmat((1:6)',[1 7])
bin =6×71 11 1 11 1 11 2 2 2 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6
用spdiags创建一个6乘6的方阵有几列箱作为对角线。因为某些对角线只有一个或两个元素,所以列中的大小在列中存在不匹配箱和对角线一种.
d = [-4 -2 -1 0 3 4 5];a = spdiags(bin,d,6,6);全(a)
ans =.6×6.1 0 0 4 0 5 6 1 2 0 0 5 6 1 2 3 0 0 6 0 2 3 4 0 0 4 4 0 0 2 0 4 5 6
每一列箱有6个元素,但只有主对角线在一种有六个要素。因此,所有其他对角线一种截断列中的元素箱这样他们就适合所选择的对角线:
方式spdiags截断对角线取决于大小m——- - - - - -N矩阵一种.什么时候 m ≥ N ,行为如下图所示:
对角线以下元素的主对角线取元素最高额首先列。
对角线以上元素的主对角线取元素底部首先列。
此行为何时逆转 m < N :
a = spdiags(bin,d,5,6);全(a)
ans =.5×6.1 0 0 1 1 2 2 0 0 2 2 2 3 3 3 0 0 3 0 0 4 4 0 0 5 0 5 5 0
对角线以上元素的主对角线取元素最高额首先列。
对角线以下元素的主对角线取元素底部首先列。
输入矩阵。这个矩阵通常(但不一定)是稀疏的。
数据类型:单|双|int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑复数支持:金宝app是的
单
双
int8
int16
int32
int64
uint8
uint16
uint32
uint64
逻辑
对角线编号,指定为正整数的标量或向量。对角线数遵循与此相同的约定诊断接头:
诊断接头
D <0.低于主要对角线,满足于d> = - (m-1).
D <0.
d> = - (m-1)
d = 0是主对角线。
d > 0在主对角线上,满足吗d < = (n - 1).
d > 0
d < = (n - 1)
一个m——- - - - - -N矩阵一种有(m + n - 1)对角线。这些对角线在向量中指定D.使用指数从- (m-1)来(n-1).例如,如果一种是5-by-6,它有10个对角线,在向量中指定D.使用Indices -4,-3,... 4,5.下图说明了该对角线编号。
(m + n - 1)
- (m-1)
(n-1)
如果你指定一条对角线在外面一种(如d = 7在上面的例子中),然后spdiags返回对角线作为所有零。
d = 7
例子:SPDIAGS(A,[3 5])从中抽取第三条和第五条对角线一种.
SPDIAGS(A,[3 5])
对角元素,指定为矩阵。这个矩阵通常(但不一定)是满的。spdiags使用箱替换指定的对角线一种.如果所请求的输出大小是m——- - - - - -N, 然后箱必须有分钟(m, n)列。
与语法S = spdiags(本·d m, n),如果一列箱有比它要替换的对角线更多的元素,以及m > = n, 然后spdiags的超对角线元素降低一部分的一部分箱和来自的子对角线的元素上一部分的一部分箱.但是,如果M ,则超对角线来自上一部分的一部分箱,以及来自的子对角线降低部分。有关此行为的示例,请参阅不同尺寸的列和对角线.
m > = n
M ,则超对角线来自上一部分的一部分箱,以及来自的子对角线降低部分。有关此行为的示例,请参阅不同尺寸的列和对角线.
尺寸大小,指定为非负标量整数。spdiags使用这些输入来确定要创建的矩阵的大量。
例子:spdiags(本,d, 300400)使用列创建一个300×400个矩阵B.沿指定对角线放置D..
spdiags(本,d, 300400)
B.
对角元素,以完整矩阵的形式返回。的列布特包含从中提取的对角线一种.任何元素布特对应于外面的位置一种设置为零。
对角线数,作为列向量返回。看到D.获取对角线编号的描述。
输出矩阵。S.采取两种形式中的一种:
和s = spdiags(bin,d,a),指定的对角线一种用列替换为箱创建S..
和S = spdiags(本·d m, n), 这m——- - - - - -N稀疏矩阵S.是由列向量构成的箱并将它们沿对角线放置D..
用法说明和限制:
第一个输入不能稀疏。
有关更多信息,请参见在GPU上运行matlab函数(并行计算工具箱).
此函数完全支持分布式数组。金宝app有关更多信息,请参见使用分布式阵列运行MATLAB函数(并行计算工具箱).
诊断接头|Speye.
Speye.
您有这个示例的一个修改版本。要用编辑打开这个例子吗?
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站来获得可用的翻译内容,并看到当地的活动和提供。根据您所在的位置,我们建议您选择:.
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
与当地办事处联系