2015-11-04 74 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維矩陣。還有一些錯誤處理。