我有一个矩阵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的新手。任何人都可以帮忙找出问题吗?
答案 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
将在每次迭代时包含所需的矩阵。