2011-03-04 61 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