【问题标题】:Loops for 3d matrix3d 矩阵的循环
【发布时间】:2014-09-12 21:41:26
【问题描述】:

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

我想使用 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 的新手。谁能帮忙解决这个问题?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    没有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 将在每次迭代中包含所需的矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-02
      • 1970-01-01
      • 2022-06-30
      • 2011-12-16
      • 2021-05-24
      • 2012-06-13
      • 2015-01-21
      • 1970-01-01
      相关资源
      最近更新 更多