2014-04-11 171 views
1

我有一个矩阵,我想要考虑它有4 sub matrices它们放在一起。当他们在一起时如何找到每个子矩阵的中间元素?如何在矩阵中找到子矩阵的中间元素

考虑下面的矩阵。它由4个子矩阵构成。

1 2 3 4 5 6 
7 8 9 10 11 12 
13 14 15 16 17 18 
19 20 21 22 23 24 
25 26 27 28 29 30 
31 32 33 34 35 36 

我想他们中的元素,所以我可以有:

8, 11, 26, 29 

回答

0

从我所了解,这可能为你工作,这是一个演示,所以用自己的参数 -

代码

%%// Input matrix 
A = rand(44,44); 

%%/ Number of submatrices needed 
num_submat = 16;%%// 4 for your example case 

%%/ Number of submatrices along row and column 
num_submat1= sqrt(num_submat); 

%%// Middle element indices along each direction 
v1 = floor(size(A,2)/(2*num_submat1))+1:size(A,2)/(num_submat1):size(A,2); 

%%// Middle elements 
middle_ele = A(v1,v1) 
0

它总是让你知道,矩阵索引在MATLAB去纵列例如,

indOrd = [1,4,7;2,5,8;3,6,9] 

其中数字是索引顺序,与您的示例无关。 indOrd(4)将返回4.尝试使用它来查找索引位置。

0

假设每个子矩阵为奇数大小2n+1中,一个子矩阵的中心坐标是[n+1, n+1]。如果你有一个带有M×M子矩阵的正方形(在你的情况下M = 2),坐标是[n+1+i*(2*n+1), n+1+j*(2*n+1)],i和j独立取值范围为0:M-1

转回Matlab的,现在是很容易产生矩阵A的分组的子阵的中心的所有指标:

n = floor(size(A,1)/(2*M)); 
xc = n+1+reshape(repmat(0:M-1,M,1),[],1); 
yc = n+1+reshape(repmat((0:M-1)',1,M),[],1); 
centers = A(yc, xc); 

对于偶数大小的小矩阵,你要选择哪一个元素是中心,那么修改相当容易。