获取矩阵中下一行和下一列的位置

조회수:8(최근30일)
我想要得到上面矩阵中的下一行下一列。
下标列表示矩阵中所有非零项。
举个例子,如果你在A(1,1)它应该给我索引列的-2的索引,并更新下一行到2。因为-2是下标列的下标2。对于A(1,1)的下一列它应该从下标列中得到下标2所以下一列将是3。
当你在A(2,1)点。下一行是8。下标列应该是4(因为8是矩阵中的第4个非零元素)下标列应该是10因为1是矩阵中的第10个非零元素。
请给我一个提示
댓글수:12
德席尔瓦"class=
德席尔瓦 2021년10월12일
是的,你是正确的 @Stephen 对于索引9,行中的next =0,列中的next =0;
谢谢你!

댓글을달려면로그하십시오。

답변(2개)

Stephen23"class=
Stephen23 2021년10월12일
편집:Stephen23 2021년10월12일
一种相当简单、有效、健壮的方法:
=[1 0 2 0 0; 2, 8, 0, - 1, 0, 0, 0 3 0 2; 0、3、2,0,0,1,2,0,0,4]
一个= 5×5
1 0 -2 0 0 2 8 0 1 0 0 0 3 0 -2 0 -3 2 0 0 1 2 0 0 0 -4
[C,R] = find(A.');
N =数字(R);
M = repmat([R,C],1,3);
M(:,1) = 1: n;
M(:,2) =非零(A.');
M(:,5:6) = 0;
k = 1:N
X = find(C>C(k) & R==R(k),1);
Y = find(R>R(k) & C==C(k),1);
如果元素个数(X)
M(k,5) = M(X,1);
结束
如果元素个数(Y)
M(k,6) = M(Y,1);
结束
结束
disp (M)
11 11 2 3 2 2 2 2 1 3 0 6 3 2 2 1 4 10 4 8 2 2 5 8 5 12 4 0 0 6 3 3 3 7 9 7 2 3 5 0 12 8 -3 4 2 9 11 9 2 4 3 0 0 10 1 5 1 11 0 11 2 5 2 12 0 12 -4 5 5 5 5 0 0 0 0 0 0 0 0
댓글수:5

댓글을달려면로그하십시오。


大卫•希尔"class=
大卫•希尔 2021년10월9일
Matlab索引是向下再跨的。
A=[1 0 -2 0 0;2 8 0 1 0;0 0 3 0 -2; 1 2 0 0 0 -4];
= ';%获取您的索引
(~ = 0)%显示A中每个非零的索引
如果可以,建议使用线性索引。
%如果你在a(1),那么下一行/列(将与你的相反)
N = 1;%的当前位置
[m, n] =大小(一个);
如果国防部(N, m) ~ = 0
b =装天花板((N + 1) / m);
找f = ((N + 1: b *米),1);
如果~ isempty (f)
r = mod N, m + f;
其他的
r = [];
结束
其他的
r = [];
结束
如果N < = m * (N - 1)
找f = ((N + m: m: m * N), 1);
如果~ isempty (f)
c =装天花板(N / m) + f;
其他的
c = [];
结束
其他的
c = [];
结束
댓글수:9
大卫•希尔"class=
大卫•希尔 2021년10월12일
我使用的是线性索引。(1) = =(1)。
A =[1 0 -2 0 0;2 8 0 1 0;0 0 3 0 -2; 1 2 0 0 0 -4];
N = 1;%当前位置,线性索引到A
[m, n] =大小(一个);
如果国防部(N, m) ~ = 0
b =装天花板((N + 1) /米)
找f = ((N + 1: b *米),1)
如果~ isempty (f)
nextRowNumber = mod N, m + f
其他的
nextRowNumber = []
结束
其他的
nextRowNumber = []
结束
如果N < = m * (N - 1)
找f = ((N + m: m: m * N), 1)
如果~ isempty (f)
nextColumnNumber =装天花板(N / m) + f
其他的
nextColumnNumber = []
结束
其他的
nextColumnNumber = []
结束
输出A(1), nextColumnNumber=3, nextRowNumber=2
A(7)的输出。nextColumnNumber = 4, nextRowNumber = 4
如果你不喜欢线性索引,你可以从sub2ind()
sub2ind(大小(a), 2, 2);%等于7
我不打算再回复了。

댓글을달려면로그하십시오。

범주

了解更多矩阵和数组帮助中心而且文件交换

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的