0

通常のループは

   for i=1:50

   end

しかし、4つの異なる配列の特定の整数を指定した順序で同時にループを実行したいと考えています。したがって、最初のループでは、Matlab は r1、r2、c1、c2 から最初の整数を取得します。次に、2 番目のループでは、Matlab は r1、r2、c1、c2 から 2 番目の整数を取得します。

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_raw」が必要になるようにしたいと思います。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 に答える