2014-09-12 137 views
-4

我有一个矩阵A与维(45x500x5)。3d矩阵的循环

我想使用MATLAB循环从矩阵中提取数据,如下所示,其中第一个组件从1到45;第三是从1到5

data 1 = [A(1,:,1)]; 
data 2 = [A(2,:,1) A(1,:,2)]; 
data 3 = [A(3,:,1) A(2,:,2) A(1,:,3)]; 
data 4 = [A(4,:,1) A(3,:,2) A(2,:,3) A(1,:,4)]; 
data 5 = [A(5,:,1) A(4,:,2) A(3,:,3) A(2,:,4) A(1,:,5)]; 
data 6 = [A(6,:,1) A(5,:,2) A(4,:,3) A(3,:,4) A(2,:,5)]; 
data 7 = [A(7,:,1) A(6,:,2) A(5,:,3) A(4,:,4) A(3,:,5)]; 

等,最多:

data 45 = [A(45,:,1) A(44,:,2)] A(43,:,3) A(42,:,4) A(41,:,5)]; 

我在MATLAB很新。任何人都可以帮助解决这个问题吗?

回答

0

在没有for循环的情况下,有更高效的方法可以做到这一点,但是如果您必须坚持这一点,那么您可以创建一个从1到45的for循环。对于每次迭代,您将使用当前循环索引,然后创建以您指定的方式降低线性指数。您还需要使用if声明来确保在指定第一维的递减指数时我们不会出现界限。因此:

for idx = 1 : 45 
    if idx < 5 
     data = A(idx:-1:1,:,1:idx); 
    else 
     data = A(idx:-1:idx-4,:,1:5); 
    end 
    %// Do your processing with data here 
    %// ... 
end 

data将在每次迭代中包含所需的矩阵。