0

正常的循环是

   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 中做到这一点?

4

1 回答 1

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
于 2014-11-20T16:18:49.453 回答