2016-06-16 13 views
0

Ich versuche eine Schleife zu verwenden, um blinkende Bilder auf der linken und rechten Seite des Bildschirms anzuzeigen. Es funktioniert im Moment, aber zeigt Bilder in der Reihenfolge, in der sie in meinem Ordner erscheinen, was keine Idee ist, da ich es lieben würde, wenn sie zufällig präsentiert würden. Und Ideen würden geschätzt werden.Verwenden einer Schleife zum Anzeigen von Bildern in zufälliger Reihenfolge

ich auf Fenster, um die psychtoolbox in MATLAB verwende, hier ist mein Code:

%reading in all images 
baseDir=pwd; 
cd([baseDir,'\Images']) %change directory to images folder 
jpegFiles = dir('*.jpg'); % create a cell array of all jpeg images 

for k=1:size(jpegFiles,1) 
images{k}=imread(jpegFiles(k).name); 
end 
cd(baseDir) %change directory back to the base directory 


%using a loop to show images 
for k=1:290 
texture1(k)=Screen('MakeTexture',w,images{k});  
end 
for k=1:145 
Screen('DrawTexture',w,(texture1(k)), [], leftposition); 
Screen('DrawTexture',w,(texture1(k+145)), [], rightposition); 
Screen('DrawLines', w, allCoords,... 
lineWidthPix, black, [xCenter yCenter], 2); 
Screen(w,'Flip'); 
pause(0.2); 
end 
+0

Danke @BillBokeey, die sortiert hat es für mich aussehen würde! – Emily

Antwort

2

Sie entweder randperm nutzen, um die Liste der Bilder, up-front zu mischen.

Mit diesem Ansatz können Sie sicherstellen, dass das gleiche Bild mit Ihrer Methode niemals doppelt erscheint.

Wenn Sie nur zufällig wollen jedes Bild angezeigt werden (auch wenn es vor angezeigt worden ist), anstatt images{k} verwenden, können Sie den Index von allen Werten zwischen 1 und numel(images) (mit randi) und Anzeige dass Bild zufällig zeichnen .

images{randi([1 numel(images)])} 

oder Sie könnten zufällig in texture1 indexieren.

In Ihrem Code, der so etwas wie diese

nImages = numel(images); 

% Loop all of this as long as you want 

left_texture = texture1(randi([1 nImages])); 
right_texture = texture1(randi([ 1 nImages])); 

Screen('DrawTexture', w, left_texture, [], leftposition); 
Screen('DrawTexture', w, right_texture, [], rightposition); 
Verwandte Themen