2014-11-20 1 views
0

Нормальный цикл являетсяMATLAB петли через определенные целые числа и в порядке, указываю v2

for i=1:50 

    end 

, но я хочу, чтобы выполнить цикл через определенные целые числа в 4-х различных массива одновременно и в том порядке, указываю. Итак, в первом цикле Matlab возьмет первое целое число от r1, r2, c1, c2. Затем для второго цикла Matlab возьмет второе целое число от r1, r2, c1, c2.

For r1 = [1128, 1128, 1128, 1128, 1128, 1128, 1128, 1128]; 
    r2 = [1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148]; 
    c1 = [776, 776 + 1280, 776 + 1280*2, 776 + 1280*3, 776 + 1280*3 + 994, 776 + 1280*4 + 994, 776 + 1280*5 + 994, 776 + 1280*6 + 994, 776 + 1280*7 + 994]; 
    c2 = [792, 792 + 1280, 792 + 1280*2, 792 + 1280*3, 792 + 1280*3 + 994, 792 + 1280*4 + 994, 792 + 1280*5 + 994, 792 + 1280*6 + 994, 792 + 1280*7 + 994]; 
    a1_raw = imread('T:\SST\...\pinhole_1-8_6s', 'PixelRegion', {[r1, r2], [c1, c2]}); 
End 

Кроме того, я хотел бы a1_raw менять каждый раз, когда петля петли так, что в конце цикла я должен иметь 8 различных «a1_raws». Как я могу это сделать в MATLAB?

ответ

0

использовать один индекс для всех массивов

n = numel(r1); %// assuming r2, c1 and c2 all have same number of elements 
a1_raw = cell(1, n); %//pre-allocate 
for ii = 1:n 
    r1i = r1(ii); 
    r2i = r2(ii); 
    c1i = c1(ii); 
    c2i = c2(ii); 
    a1_raw{ii} = imread('T:\SST\...\pinhole_1-8_6s', 'PixelRegion', {[r1i, r2i], [c1i, c2i]}); 
end 
+0

Круто, это работает! Cheers Shai. Единственное, что есть «a1_raw» - поместив его так же, как и у вас, я думаю, что потеряю матрицу 17x21, мне понравится. Поэтому, в конце концов, мне бы хотелось 8 разных переменных, каждый из которых ссылался на матрицу 17x21. Есть идеи? –

+0

О, я это разработал: 'dataset = imread ('T: \ SST \ ... \ pinhole_1-8_6s.tif', 'PixelRegion', {[r1i, r2i], [c1i, c2i]}); eval (['a_raw' num2str (ii) '= dataset']) ' –

 Смежные вопросы

  • Нет связанных вопросов^_^