下三角半芬矿基质

2次观看(最近30天)
如何为给定的半芬矩阵以这种形式构建稀疏矩阵?我只需要稀疏的半芬矿基质的下三角
例如,半芬属矩阵为Q0:
2 0 -1
Q0 = 0 0.2 0
-1 0 2
写为:
一世 = [[ 1 2 3 3 ];
j = [[ 1 2 3 1 ];
C = [[ 2 0.2 2- 1];
在哪里 我显示行的数量
J显示列数
c是属于(i,j)的Elemnt,它不是零,属于半芬特矩阵的下三角形
2条评论
Guillaume
Guillaume 2020年5月4日
阿尔伯特·斯特林 评论错误地发布了一个答案:
我需要一种简单的算法,该算法在此对称矩阵的显示下三角部分中选择非零值,然后将其返回以下:
i = [[ 1 2 3 3 ];
j = [[ 1 2 3 1 ];
C = [[ 2 0.2 2- 1];
我需要灵活的算法,这样我就可以给它任何所需的对称矩阵,并像提到的那样具有答案。

登录发表评论。

接受的答案

Guillaume
Guillaume 2020年5月4日
[i,j,c] = find(tril(yourmatrix)))
似乎是您所追求的。
1条评论
阿尔伯特·斯特林
阿尔伯特·斯特林 2020年5月4日
非常感谢您,这是处理这个problam的快速方法。
但是我自己发现了一个很长的人:
Q0 = [-2 0 0.2;
0 -2 0;
0.2 0 -0.2]
[,c] = size(q0);
为了i = 1:c
为了j = 1:3-i
Q0(I,I+J)= 0;
结尾
结尾
Q1 =稀疏(Q0);
[i,j,s] = find(q1);
f = [i,j,s]'

登录发表评论。

更多答案(1)

约翰·德·埃里里科(John D'Errico)
您只想要下部三角元素。半明确性与您最终的要求无关。
A = Sprand(5,5,.3);
>>满(A)
ans =
0.46421 0.83266 0 0.022104 0.18026
0.26627 0 0 0 0
0 0 0 0 0
0 0 0 0.92865 0
0 0 0.37763 0.42783 0
>> [rind,cind,val] = find(tril(a))
rind =
1
2
5
4
5
cind =
1
1
3
4
4
val =
0.46421
0.26627
0.37763
0.92865
0.42783
这就是您将下部三角形提取到一组行和列索引以及这些位置中的非零元素的方式。从表面上看,这似乎是您的问题。但是,我的猜测是您真的想从这些值中构建稀疏矩阵吗?或者,也许您只是不明白MATLAB中已经存在稀疏矩阵,并且可以这样使用?根本不清楚什么是真正的问题。
无论如何,如果您想将矩阵构建为稀疏的矩阵,那么只需使用这些向量调用稀疏。
Atril =稀疏(Rind,Cind,Val,5,5)
心房=
(1,1)0.46421
(2,1)0.26627
(5,3)0.37763
(4,4)0.92865
(5,4)0.42783
>>满(Atril)
ans =
0.46421 0 0 0 0
0.26627 0 0 0 0
0 0 0 0 0
0 0 0 0.92865 0
0 0 0.37763 0.42783 0
1条评论
阿尔伯特·斯特林
阿尔伯特·斯特林 2020年5月4日
谢谢,您的解决方案似乎是解决这个问题的好方法。再次感谢你。

登录发表评论。

标签

s manbetx 845


发布

R2019b

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!