我正在生成一个 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));
新 =
0 1 0 0 1
0 1 0 1 0
1 0 1 1 1
0 1 0 0 1
现在,我想创建一个矩阵来存储在 mnew 中提取的行和列的索引
由于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
:
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
希望这可以帮助,
覆盖 '
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句