WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Bilder(JPG) in zufälliger Reihenfolge darbieten

 

Akira
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2011, 22:53     Titel: Bilder(JPG) in zufälliger Reihenfolge darbieten
  Antworten mit Zitat      
Hallo,
ich hoffe jemand kann mir helfen, bin noch Anfänger Sad
Ich habe ein Funktion erstellt bei der drei Bilder nacheinander aus einem Unterordner gelesen werden. Für jedes Bild das erscheint muss eine Antwort gegeben werden. Ich möchte nur gerne, dass die drei Bilder zufällig erscheinen. Bis jetzt kommen sie immer in der gleichen Reihenfolge. Wie mach ich das???

Im Moment schaut alles so aus:

Code:

function xy

global data;    

close all;

fig = figure('Units','normalized', 'Position',[0 0 1 1], 'MenuBar','none', 'KeyPressFcn','my_keypressfcn');

axes('Units','normalized', 'Position',[0 0 1 1]);
axis off;

%% Instruktion
im_data = imread('img\in.jpg');    
image(im_data);                    

pause;                              

solutionL = [0 1 1];

%% Task
for iStim = 1:3 % Schleife ¸ber Anzahl der Stimuli
   
    %% Stimuli darbieten
    im_data = imread(['img\p',num2str(iStim),'.jpg']);
    image(im_data);
   
    %% Antwort abfragen
   
    valid_response = 0;    
    timeout = 0;          
    set(fig, 'CurrentCharacter', 'x');  
    tic;
   
    while ~valid_response                      
       
        %% Time-out pr¸fen
        react_time = toc;
        if react_time > 5                    
            timeout = 1;                      
            break;                            
        end
       
        %% Tasteneingabe abfragen
        key = get(gcf,'CurrentCharacter');  
       
        if strcmp(key, 'j') || strcmp(key, 'n')  
           
            valid_response = 1;                    
           
            if strcmp(key, 'j')
                response = 1;       % 'j' (ja) -> 1 (logisch wahr)
            else
                response = 0;       % 'n' (nein) -> 0 (logisch falsch)
            end
            correct = (solutionL(iStim) == response);
           
        end
       
        pause(.01)  

    end  %while
   
    if timeout

        response = -1;
        correct = -1;
    end
   
    %% Trial-Daten festhalten
 
   
end  %for iStim

%% Ende

function my_keypressfcn  %Subfunktion
 


Wäre echt toll wenn mir jemand behilflich sein könnte.
Vielen Dank schon mal für die Mühe

Lg Akira
Private Nachricht senden Benutzer-Profile anzeigen


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 14.01.2011, 23:17     Titel:
  Antworten mit Zitat      
Hallo,

erstell doch einfach einen Zufallsgenerator, der festlegt welches Bild dargestellt wird. Hier mal ein Minimalbeispiel:

Code:

I1 = imread('Image1');
I2 = imread('Image2');
I3 = imread('Image3');

numI = ceil(3.*rand(1,1)); % Nummer des Bildes

switch numI
    case 1
        image(I1)
    case 2
        image(I2)
    case 3
        image(I3)
end
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Akira
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2011, 23:43     Titel:
  Antworten mit Zitat      
Vielen Dank für die schnelle Antwort, hab's gleich mal ausprobiert und es funktioniert soweit. Steh nur jetzt vor dem nächsten Problem. Für jedes Bild was erscheint wird eine Frage gestellt, die mit ja oder nein beantwortet werden soll. Dazu habe ich vorher die Lösung angegeben, aber halt nur für die eine Reihenfolge (Code: siehe oben). Wie schreib ich das jetzt am geschicktesten, wenn die Bilder jetzt in einer zufälligen Reihenfolge erscheinen.

Hast Du eine einfache Lösung dafür?

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.01.2011, 00:34     Titel:
  Antworten mit Zitat      
Hallo,

das ist auch kein Problem. Jetzt wo du das Prinzip verstanden hasst, habe ich auch mal alle Bilder in einen Cellarray geladen. Somit kann man sich die switch-case Struktur sparen und nur mit Indexen arbeiten. Schau dir das Beispiel genau an, wenn Fragen bleiben-->frage
Code:

I{1} = imread('Image1');
I{2} = imread('Image2');
I{3} = imread('Image3');

antworten = {'ja','nein','ja'}; % Antwortmatrix
numI = ceil(3.*rand(1,1)); % Nummer des Bildes
image(I{numI});

while 1
    string = input('ja oder nein: ','s');
    if strcmp(string,'ja') || strcmp(string,'nein') % Überprüfen ob ja oder nein eingegeben wurde und nicht z.B "hallo"
        break;
    end
end

 if strcmp(string,antworten(numI))
     disp('Das war die richtige Antwort');
 else
     disp('Das war die falsche Antwort');
 end
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Akira
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 14.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2011, 15:01     Titel:
  Antworten mit Zitat      
Vielen Lieben Dank noch mal. Soweit funktioniert alles.

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.