Ich muss einige EEG-Daten analysieren und ich versuche, die Vorverarbeitungsprozedur zu automatisieren.For-Schleife für verschiedene Datensätze und Bedingungen für EEGLAB
Ich habe 40 Teilnehmer. Jeder Teilnehmer hat 4 verschiedene Dateien für 4 Bedingungen.
So werden die Dateien gespeichert als
1-1
1-2
1-3
1-4
2-1
2-2
2-3
2-4
...
bis zu 40-4
Die Dateien sind von BioSemi (.bdf)
Ich habe die Vorbearbeitung Verfahren automatisieren konnte , aber jedes Mal, wenn ich eine andere Datei auswählen muss, führe das Skript aus und speichere es.
Ich möchte eine for-Schleife ausführen, die alles selbst erledigt (1-1 nehmen, die Vorverarbeitung ausführen, speichern, 1-2 ... usw. nehmen).
Im Anschluss gebe ich an, was ich bis jetzt habe.
Ich habe den ganzen Tag versucht, eine for-Schleife zu schreiben, aber es funktioniert einfach nicht.
Ich würde wirklich jede Hilfe zu schätzen wissen.
Dies ist das aktuelle Pre-Processing-Skript:
subject = '1-1.bdf'
%Open EEGLAB and inizialize several EEGLAB variables (listed in the output
%function
[ALLEEG EEG CURRENTSET ALLCOM] = eeglab;
%Load a file
%EEG=pop_loadset; % pop up window to input arguments
EEG = pop_biosig(subject) %Reads in the dataset frin a BIOSEMI file
% Stores the dataset into EEGLAB
[ALLEEG EEG CURRENTSET ] = eeg_store(ALLEEG, EEG);
%Change sampling rate to 512
EEG = eeg_checkset(EEG);
EEG = pop_resample(EEG, 512);
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, CURRENTSET); %save it as a new dataset
% Edit Channel Location
EEG = eeg_checkset(EEG);
EEG=pop_chanedit(EEG, 'lookup','D:\\Matlab\\eeglab_current\\eeglab13_5_4b\\plugins\\dipfit2.3\\standard_BESA\\standard-10-5-cap385.elp');
% Store the dataset into EEGLAB
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
% Add some comments
EEG.comments = pop_comments(EEG.comments,'','Sampling rate was changed to 512.',1);
% You can see the comments stored with the dataset either by typing >> EEG.comments or selecting the menu option Edit->About this dataset.
%Select Data. Remove EXG5:EXG8
EEG = eeg_checkset(EEG);
EEG = pop_select(EEG,'nochannel',{'EXG5' 'EXG6' 'EXG7' 'EXG8'});
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
%HighPassFilter 0.5
EEG = eeg_checkset(EEG);
EEG = pop_eegfilt(EEG, 0.5, 0, [], [0], 0, 0, 'fir1', 0);
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
%LowPassFilter 50
EEG = eeg_checkset(EEG);
EEG = pop_eegfilt(EEG, 0, 50, [], [0], 0, 0, 'fir1', 0);
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
%ReReference to 35 36 (EXG3. EXG4)
EEG = eeg_checkset(EEG);
EEG = pop_reref(EEG, [35 36]);
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
% Reject Continuous By Eye
EEG = eeg_checkset(EEG);
pop_eegplot(EEG, 1, 0, 1);
eeglab redraw % Update the EEGLAB window to view changes
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Automatic Channel Rejection
EEG = eeg_checkset(EEG);
EEG = pop_rejchan(EEG, 'elec',[1:34] ,'threshold',5,'norm','on','measure','prob');
[ALLEEG EEG CURRENTSET] = pop_newset(ALLEEG, EEG, 2,'overwrite','on','gui','off');
eeglab redraw % Update the EEGLAB window to view changes
Hallo @gariepy, danke für Ihre Antwort so viel zu bekommen, ich schätze wirklich wirklich. Leider kann ich es immer noch nicht zur Arbeit bringen. Es tut mir leid, aber dies ist mein erster Tag, an dem ich jemals Matlab programmiert oder benutzt habe. Muss ich den gesamten Pfadnamen wie 'D:/5 - EEG/EEG Recordings' eingeben, wo immer' Pfadname' oder 'Vollständiger_Pfadname' steht? Um es funktionieren zu lassen, sollte ich gehen: 'new-> function' Kopieren Sie den gesamten Code und fügen Sie ihn ein.Speichern Sie die Funktion in einem beliebigen Ordner 'SethPath-> AddFolder'. Ich erhalte die Fehlermeldung: "Die ausgewählte Sitzung kann nicht ausgewertet werden, da sie eine ungültige Anweisung enthält" – Glu
Ja, speichere den Code in einer Datei, in diesem Fall rufe 'run_script_with_loop.m', weil MATLAB den folgenden Namen haben möchte 'function', um den Dateinamen zu finden. Stellen Sie sicher, dass sich der Ordner, in dem Sie die Datei speichern, in Ihrem Matlab-Pfad befindet. Dann sollten Sie '% run_script_with_loop ('D: \ MATLAB \ eeglab_current \ data_folder')' 'eingeben können, wobei' data_folder' der vollständige Name ist, an dem sich Ihre .'.bdf' Dateien befinden. – gariepy
Auch sollte das '...' darstellen, wo der ganze Code von Ihrem Beispiel gehen sollte. – gariepy