Subtractive Baseline-correction

5 次查看(过去 30 天)
Hello All,
Im trying to do a subtractive baseline correction on pupil data. I wrote the skript already but when i plot the data, it seems like the baseline correction did not work. The graphs do not all start from the same point. Any ideas of what i could´ve done wrong?
Thank you in advance
%Verzeichnis
Verzeichnis = '/Users/eliebonin/Documents/MATLAB/edf_daten_elie/Datensatz eye tracking';
%Daten laden
load('testmat3.mat')
%Überprüfen der Größe der Matrix
[proben_anzahl, ~] = size (testmat3);
%Sicherstellen, dass die Anzahl der Proben größer oder gleich 10 ist
if proben_anzahl < 10
error ('Es gibt nicht genügend Proben für Baseline correction');
end
%Definieren des Zeitbereiches für die Baseline
baseline_zeitraum = 1:10; %Annahme: Die ersten zehn Samples entgsprechen dem Baseline-Zeitraum
%Berechnen des Mittelwerts während des baseline Zeitraums für jede Probe
baseline_groesse = mean(testmat3(:,baseline_zeitraum), 2);
%substraktion des Baseline-Mittelwerts von allen Pupillengrößen für jede
%Probe
baseline_corrected_daten = testmat3 - baseline_groesse;
save('baseline_correction.mat', 'baseline_corrected_daten');

采纳的回答

Mathieu NOE
Mathieu NOE 2024-5-14
hello
I was first a bit puzzled when you mention the baseline is made of the first 10 samples - but after several readings it seems to me you think "probes" and not samples
so the baseline is the mean(correct) but in the other dimension (along the "probe" dimension and not te time / samples dimension)
also , as your data conatin nan's it's good idea to use 'omitnan' in the mean computation parameters.
I suspect this is what you wanted to do
%Daten laden
load('testmat3.mat')
figure(1),plot(testmat3)
%Überprüfen der Größe der Matrix
[proben_anzahl, ~] = size (testmat3);
%Sicherstellen, dass die Anzahl der Proben größer oder gleich 10 ist
if proben_anzahl < 10
error ('Es gibt nicht genügend Proben für Baseline correction');
end
%Definieren des Zeitbereiches für die Baseline
baseline_zeitraum = 1:10; %Annahme: Die ersten zehn Samples entgsprechen dem Baseline-Zeitraum
%Berechnen des Mittelwerts während des baseline Zeitraums für jede Probe
% baseline_groesse = mean(testmat3(:,baseline_zeitraum), 2, 'omitnan');
baseline_groesse = mean(testmat3(baseline_zeitraum,:), 1, 'omitnan');
%substraktion des Baseline-Mittelwerts von allen Pupillengrößen für jede
%Probe
baseline_corrected_daten = testmat3 - ones(size(testmat3,1),1)*baseline_groesse;
figure(2),plot(baseline_corrected_daten)
save('baseline_correction.mat', 'baseline_corrected_daten');
  4 个评论
Camilla
Camilla 2024-5-14
Thank u so so much this worked perfectly for me!

请先登录,再进行评论。

更多回答(1 个)

Joe Vinciguerra
Joe Vinciguerra 2024-5-14
I suspect you want this:
baseline_groesse = mean(testmat3(baseline_zeitraum,:), 1);
instead of this:
baseline_groesse = mean(testmat3(:,baseline_zeitraum), 2);

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by