2011-03-04 65 views
1

我有結構 '小區',每個包含多個矢量的2維數組:MATLAB:二維數組的結構(包含向量)到三維數組?

cell(1,1).U = [1 2 3]; 
cell(1,2).U = [4 5 6]; 
cell(2,1).U = [7 8 9]; 
cell(2,2).U = [0 1 2]; 

我想數據提取到3-d陣列A(I,J,K) 。

使用細胞風格提取返回一個1×3細胞,其內容是

>> {cell.U} 
ans = {[cell(1,1).U] [cell(1,2).U] [cell(2,1).U] [cell(2,2).U]} 

就這樣,在使用cell2mat()變換該到基質,如:

cell2mat(ans) 

返回一個3x4陣列。

理想情況下,我想要一個2x2x3數組,以便保留索引i和j。有什麼辦法(短路循環)來完成這個任務嗎?

回答

1

使用CATRESHAPE。另外,不要調用變量cell,因爲這是一個內置函數。

>> c(1,1).U = [1 2 3]; 
c(1,2).U = [4 5 6]; 
c(2,1).U = [7 8 9]; 
c(2,2).U = [0 1 2]; 


>> out = cat(1,c.U) 
>> out = reshape(out,2,2,3) 
out(:,:,1) = 
    1  4 
    7  0 
out(:,:,2) = 
    2  5 
    8  1 
out(:,:,3) = 
    3  6 
    9  2