2015-11-04 109 views
-1

给定n个维度的矩阵,我怎么能转换为指数的基体的细胞基质为波纹管看到:矩阵指数

click here

+1

你可能需要'ind2sub'? – NKN

+3

该图像取自matlab文档,无论您找到它,它应该链接到'ind2sub' – Daniel

回答

0
n = 3; 
[X,Y] = meshgrid(1:n); 
C = cell(n,n); 
for ii = 1:n 
    for jj = 1:n 
     C{ii,jj} = [X(ii,jj) Y(ii,jj)]; 
    end 
end 

注意,XY矩阵是可能是你在找什么,因为它们是矩阵。为了还包括索引单元格,我必须使用嵌套循环,但也有可能采用矢量化方法来实现。

X = 
    1  2  3 
    1  2  3 
    1  2  3 
Y = 
    1  1  1 
    2  2  2 
    3  3  3 
C = 
    [1x2 double] [1x2 double] [1x2 double] 
    [1x2 double] [1x2 double] [1x2 double] 
    [1x2 double] [1x2 double] [1x2 double] 

其中每个[1x2 double]是指数的请求组合。

3

如MATLAB文件中提到,您可以使用ind2sub功能:

IND = [3 4 5 6] 
s = [3,3]; 
[I,J] = ind2sub(s,IND) 

I = 
    3  1  2  3 

J = 
    1  2  2  2 
+0

,如果我不知道矩阵的维数的数量? –

+0

'[r,c] = size(M)'给你'M'矩阵的维数。 – NKN

0

功能ind2sub应该工作。另一种选择是手工计算。这很容易。请注意矩阵的结构。它由线性索引分布式列表表示。这意味着该索引可以计算:

idxRow = mod(idx-1,nRows)+1; 
idxCol = ceil(idx./nColumns); 

这是更多或更少的什么是在ind2sub完成但函数巧妙地解决了这个问题对于N维矩阵。还有一些错误处理。