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?

1 ответ

Решение

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

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
Другие вопросы по тегам