Presenting random images from a file, where each image is presented only once?
    6 次查看(过去 30 天)
  
       显示 更早的评论
    
Hi,
This is my fourth day of coding ever so bear with me.
Right now I have a folder with images. I want to present each image from the folder randomly once and only once for a certain number of trials. 
So far my code looks like this. It successfully presents a random image from the folder, but it can use the same images over again which I don't want. 
How do I make it so that each image in the folder is displayed once and only once?
Thank you in advance for your help!
emotionalImageDirectory = 'C:\PsychExperiment\Emotional';
imageTwoVarOne = dir([emotionalImageDirectory '\*.jpg']);
imageTwoVarTwo = numel(imageTwoVarOne);
idx = randi(imageTwoVarTwo);
loadimageTwo = imread(imageTwoVarOne(idx).name);
0 个评论
采纳的回答
  Jeff Miller
      
 2019-5-10
        Store a random sequence of the images in advance and then cycle through them one by one.  Something like this,
emotionalImageDirectory = 'C:\PsychExperiment\Emotional';
imageTwoVarOne = dir([emotionalImageDirectory '\*.jpg']);
imageTwoVarTwo = numel(imageTwoVarOne);
imageseq = randperm(imageTwoVarTwo);
for i=1:imageTwoVarTwo  % or the number of trials you want, which may be less than the n of images
    idx = imageseq(i);
    loadimageTwo = imread(imageTwoVarOne(idx).name);
end
2 个评论
  Jeff Miller
      
 2019-5-10
				Not sure that I follow, but maybe you want two random sequence holders, something like this:
emotionalImageDirectory = 'C:\PsychExperiment\Emotional';
imageTwoVarOne = dir([emotionalImageDirectory '\*.jpg']);
imageTwoVarTwo = numel(imageTwoVarOne);
imageseq = randperm(imageTwoVarTwo);
nonemotionalImageDirectory = 'C:\PsychExperiment\NonEmotional';
nonemoimageTwoVarOne = dir([nonemotionalImageDirectory '\*.jpg']);
nonemoimageTwoVarTwo = numel(nonemoimageTwoVarOne);
nonemoimageseq = randperm(nonemoimageTwoVarTwo);
for i=1:ntrials
    idxemo = imageseq(i);
    idxnonemo = nonemoimageseq(i);
    loadimageTwo = imread(imageTwoVarOne(idx).name);
    nonemoloadimageTwo = imread(nonemoimageTwoVarOne(idx).name);
    % Now display the two images for this trial?
end
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Image display and manipulation 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

