2014-09-12 150 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將在每次迭代中包含所需的矩陣。