循环的3d矩阵

时间:2014-09-12 21:41:27

标签: matlab matrix

我有一个矩阵A,尺寸为(45x500x5)。

我想使用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的新手。任何人都可以帮忙找出问题吗?

1 个答案:

答案 0 :(得分: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将在每次迭代时包含所需的矩阵。

相关问题