本文介绍了使用向量的MATLAB sub2ind的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个矩阵A

A = magic(5)

17    24     1     8    15
23     5     7    14    16
 4     6    13    20    22
10    12    19    21     3
11    18    25     2     9

现在,我使用

A(1:2, 1:2)

17    24
23     5

现在我需要由(1:2,1; 2)给出的线性索引为(1 2 6 7).使用sub2ind:

Now I need the linear index given by (1:2, 1;2) which are (1 2 6 7). Using sub2ind:

sub2ind(size(A),[1:2], [1:2])

但是此命令仅返回(1 7)我该如何解决呢?

But this command returns just (1 7) how can I solve this?

推荐答案

假设您要选择A(1:2,2:3):

% Row and column indexes
rind = 1:2;
cind = 2:3;

pos  = bsxfun(@plus,rind', size(A,2)*(cind-1));

pos =
     6    11
     7    12

您可能希望将其重塑为列向量pos(:),或者在一行中调用reshape().

You might want to reshape it into a column vector pos(:), or in one line with a call to reshape().

这篇关于使用向量的MATLAB sub2ind的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 03:10