1

私はこれでやりたいことをするのに本当に苦労しているので、どんな助けでも大歓迎です。

配列を X 回ループして、ランダムな方法で画像の配列を表示しています。私がやりたいことは、現在ランダムな順序で表示されている各画像の名前と、各画像がループに表示されているときに属する配列を取得し、2 つを別々の変数に格納することです。

images.blue = imread('blue.bmp');
images.red = imread('red.bmp');
images.green = imread('green.bmp');
images.yellow = imread('yellow.bmp');
colours = {images.blue, images.red, images.green, images.yellow}
cata = {images.blue, images.red}
catb = {images.green, images.yellow}

たとえばimages.blue、ループが配列を反復処理しているときに が画面に表示されている場合、その名前blueを variable に保存しますCurrentFieldname

for count = 1;
    names = (fieldnames(images));
while count <= 5
    for n = randperm(length(colours));     
   d =(colours{n}); 
   imshow(d);
   pause(1)           
   CurrentFieldName = (names {n});        
    end
    count = count+1;   
end
break
end

上記のコードで何が起こるかというと、すべての画像が表示された後、条件が満たされるまでのすべての反復で、最後に表示された画像のフィールド名が に格納されCurrentFieldnameます。

上記は私が望むものではありません。繰り返しループで画像が表示されるたびに、フィールドCurrentFieldnameに表示されている画像の名前を含めたいと思います。次に、ループの各反復中に、 と を比較して、どの配列が属しているかを確認したいCurrentFieldNamecata思いcatbますCurrentFieldName。次に、これを別の変数 に記録しますCurrCat。例えば

if CurrentFieldname == cata
    CurrCat = a;

CurrentFieldNameこれらの変数の両方を持ちCurrCat、すべての反復の最後に関連情報を含めたいと思います。次に、ランダムに表示される次の画像に対応する情報で両方が上書きされます。

これがすべて理にかなっていることを願っています。

ありがとう

4

1 に答える 1

0

やってみよう:

colors = {'red', 'green', 'blue', 'yellow' }; % existing colors, assuming for each color there is a .bmp image
NC = numel( colors ); % number of colors
% read the images once
for ci=1:NC
    img.(colors{ci}) = imread( [colors{ci}, '.bmp' ] );
end
NumIters = 1; % number of iterations over all colors
% reapeat as many times 
for itr = 1:NumIters
     ord = randperm( NC ); % permutation for this iteration
     for ci = ord(:)', %'
         CurrentFieldName = colors{ci};
         imshow( img.(colors{ci}) ); % display the current color image
         title( colors{ci} );
         tic;
         % your code here processing img.(colors{ci})
         Response = myFun( img.(colors{ci}) );
         ResponseTime = toc; % record timing of processing
         save( sprintf('data_for_itr%03d_color%02d.mat', itr, ci ),...
              'CurrentFieldName', 'Response', 'ResponseTime' );
     end
end
于 2013-01-03T07:13:09.637 に答える