Presenting random images from a file, where each image is presented only once?
7 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Jeff Miller
on 10 May 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 Comments
Jeff Miller
on 10 May 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
More Answers (0)
See Also
Categories
Find more on Image display and manipulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!