我正在生成一个9 * 9矩阵的随机图G:
G = round(rand(9));
G = triu(G) + triu(G,1)';
G = G - diag(diag(G))
我从上面的矩阵中随机提取一些行和列:
k = randperm(9);
mnew = G(k(1:4),k(2:6));
mnew =
0 1 0 0 1
0 1 0 1 0
1 0 1 1 1
0 1 0 0 1
现在,我想创建一个矩阵,存储在mnew
中提取的行和列的索引答案 0 :(得分:0)
在mnew
中,您已经提取了矩阵G
中的元素
k(1:4)
和k(2:6)
列中提供的行,因此,如果我理解了您的问题,则必须生成k(1:4)
和k(2:6)
给出的可能情侣。
定义:
k_r=k(1:4)
k_c=k(2:6)
您可以通过这种方式生成情侣(行,列):
row_idx=reshape(repmat(k_r,length(k_c),1),20,1)
col_idx=reshape(repmat(k_c,length(k_r),1)',20,1)
idx=[row_idx col_idx]
或者,只需循环生成k_r
和k_c
值
不同的夫妇:
idx=[];
for i=1:length(k_r)
for j=1:length(k_c)
idx=[idx;k_r(i) k_c(j)];
end
end
如果,例如:
k_r=[1 8 9 7]
和
k_c=[8 9 7 6 5]
你得到:
idx=[1 8
1 9
1 7
1 6
1 5
8 8
8 9
8 7
8 6
8 5
9 8
9 9
9 7
9 6
9 5
7 8
7 9
7 7
7 6
7 5];
第一列包含行索引,第二列包含列索引。
您可以reshape
生成的索引矩阵,以便更好地表示
结果:
reshape_idx=reshape(idx',2,5,4)
这将生成以下(2x5x4)
矩阵,其中每个(:,:,i)块表示mnew
的每一行的行索引(第一行)和列索引(第二行)_: / p>
reshape_idx(:,:,1) =
1 1 1 1 1
8 9 7 6 5
reshape_idx(:,:,2) =
8 8 8 8 8
8 9 7 6 5
reshape_idx(:,:,3) =
9 9 9 9 9
8 9 7 6 5
reshape_idx(:,:,4) =
7 7 7 7 7
8 9 7 6 5
希望这有帮助,
Qapla'