Subtractive Baseline-correction

4 ビュー (過去 30 日間)
Camilla
Camilla 2024 年 5 月 14 日
コメント済み: Mathieu NOE 2024 年 5 月 14 日
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!
Mathieu NOE
Mathieu NOE 2024 年 5 月 14 日
as always, my pleasure !

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeElectrophysiology についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by