文档帮助中心文档
提取非零对角线,并创建稀疏带和对角矩阵
布特= spdiags (A)
[布特,id] = spdiags (A)
布特= spdiags (A, d)
S = spdiags(本·d m, n)
S = spdiags(本,d, A)
例子
布特= spdiags (一个)提取非零对角线米——- - - - - -n矩阵一个并将它们作为列返回分钟(m, n)——- - - - - -p矩阵布特,在那里p是非零对角线的个数。
布特= spdiags (一个)
布特
一个
米
n
分钟(m, n)
p
[布特,id) = spdiags (一个)也返回对角线数字id对于非零对角线一个.的大小布特是分钟(m, n)——- - - - - -长度(id).
[布特,id) = spdiags (一个)
id
长度(id)
布特= spdiags (一个,d)提取对角线一个指定的d并以列的形式返回分钟(m, n)——- - - - - -长度(d)矩阵布特.
布特= spdiags (一个,d)
d
长度(d)
年代= spdiags (箱子,d,米,n)创建一个米——- - - - - -n稀疏矩阵年代通过取的列箱子把它们放在对角线上d.
年代= spdiags (箱子,d,米,n)
年代
箱子
年代= spdiags (箱子,d,一个)替换对角线一个指定的d以箱子.
年代= spdiags (箱子,d,一个)
全部折叠
创建一个三对角矩阵使用三个向量,改变一些矩阵对角线,然后提取对角线。
创建一个9乘1的1的向量,然后使用这个向量创建一个三对角矩阵。查看矩阵元素。
n = 9;e =的(n - 1);A = spdiags([e -2*e e],-1:1,n,n);完整的(一个)
ans =9×92 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
更改main上的值(d = 0)对角一个.
d = 0
本= abs (- (n - 1) / 2: (n - 1) / 2) ';d = 0;= spdiags(本,d, A);完整的(一个)
ans =9×94 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 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 0 4 1 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×40 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列布特.给出的所有列布特同样的长度,另一条非零对角线一个是否在相应的列上加上额外的零布特.为米——- - - - - -n矩阵与m < n,规则是:
m < n
为非零的对角线下面主对角线一个,额外的零被加在上衣列的(如在。的前两列布特).
为非零的对角线以上主对角线一个,额外的零被加在底部列的最后一列布特).
spdiags垫布特即使最长的对角线没有返回布特.
创建一个5乘5的随机矩阵。
一个=兰迪(10、5、5)
一个=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 7
提取主对角线,以及它上面和下面的第一条对角线。
D = [-1 0 1];布特= spdiags (A, d)
布特=5×310 9 0 6 3 1 5 10 10 10 10 8 10 0 7 10
试着提取第五条超级对角线(d = 5).因为一个只有四条超对角线,spdiags返回与主节点长度相同的所有0的对角线(d = 0)对角线。
d = 5
B5 = spdiags (5)
B5 =5×10 0 0 0
检查如何spdiags当输入矩阵的列比它们要替换的对角线长时,创建对角线。
用数字1到6创建一个6乘7的矩阵。
Bin = repmat((1:6)',[1 7])
本=6×71 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6
使用spdiags创建一个6 × 6的方阵,其中的几列为箱子对角线。由于一些对角线只有一个或两个元素,在列之间的大小不匹配箱子和对角线一个.
[-4 -2 -1 0 3 4 5];= spdiags(本·d 6 6);完整的(一个)
ans =6×61 0 0 4 5 6 1 2 0 0 5 6 1 2 3 0 0 6 0 2 3 4 0 0 1 0 3 4 5 0 0 2 0 4 5 6
每一列箱子有六个元素,但只有主对角线在一个有六个元素。因此,所有其他对角线一个截断的列中的元素箱子以便它们适合于选定的对角线:
的方式spdiags截短对角线取决于大小米——- - - - - -n矩阵一个.当 米 ≥ n ,其行为如下图所示:
对角线下面主对角线从上衣首先是列。
对角线以上主对角线从底部列第一位。
这种行为在 米 < n :
= spdiags(本,d, 5, 6);完整的(一个)
ans =5×61 0 0 1 1 1 2 2 0 0 2 2 3 3 3 0 0 3 0 0 3 0 4 4 4 0 0 5 0 5 5 5 0
对角线以上主对角线从上衣首先是列。
对角线下面主对角线从底部列第一位。
输入矩阵。这个矩阵通常(但不一定)是稀疏的。
数据类型:单|双|int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑复数的支持:万博1manbetx是的
单
双
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)
一个米——- - - - - -n矩阵一个有(m + n - 1)对角线。这些对角线是在向量中指定的d使用指数从——(m - 1)来(n - 1).例如,如果一个是5乘6,它有10条对角线,在向量中有规定d使用索引-4,-3,…4、5。下面的图表说明了这种对角线编号。
(m + n - 1)
——(m - 1)
(n - 1)
如果你指定一条对角线位于一个(如d = 7在上面的例子中),然后spdiags返回对角线为全0。
d = 7
例子:spdiags (5 [3])抽取第三和第五对角线一个.
spdiags (5 [3])
对角元素,指定为一个矩阵。这个矩阵通常(但不一定)是满的。spdiags使用箱子中指定的对角线一个.如果请求的输出大小为米——- - - - - -n,然后箱子必须有分钟(m, n)列。
与语法S = spdiags(本·d m, n),如果是一列箱子比要替换的对角线有更多的元素,然后呢m > = n,然后spdiags将超对角线元素从较低的列的一部分箱子的子对角线元素上列的一部分箱子.然而,如果m < n,那么超对角线是从上列的一部分箱子,和次对角线较低的部分。有关此行为的示例,请参见不同尺寸的列和对角线.
m > = n
尺寸大小,指定为非负标量整数。spdiags使用这些输入来确定要创建的矩阵有多大。
例子:spdiags(本,d, 300400)创建一个300 × 400的矩阵,列为B沿着指定的对角线放置d.
spdiags(本,d, 300400)
B
对角元素,作为一个完整的矩阵返回。的列布特包含对角线提取一个.任何元素的布特对应于外面的位置一个设置为零。
对角线数,作为列向量返回。看到d用于描述对角线编号。
输出矩阵。年代采取两种形式之一:
与S = spdiags(本,d, A)中指定的对角线一个中的列替换为箱子创建年代.
与S = spdiags(本·d m, n),米——- - - - - -n稀疏矩阵年代是由箱子把它们放在对角线上d.
使用注意事项及限制:
第一个输入不能是稀疏的。
有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
该函数完全支持分布式数组。万博1manbetx有关更多信息,请参见使用分布式数组运行MATLAB函数(并行计算工具箱).
诊断接头|speye
speye
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系