Presenting random images from a file, where each image is presented only once?
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Robert Newman
 il 9 Mag 2019
  
    
    
    
    
    Commentato: Jeff Miller
      
 il 10 Mag 2019
            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 Commenti
Risposta accettata
  Jeff Miller
      
 il 10 Mag 2019
        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 Commenti
  Jeff Miller
      
 il 10 Mag 2019
				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
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Image display and manipulation in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

