104 lines
2.1 KiB
Matlab
104 lines
2.1 KiB
Matlab
%% Datensätze definieren
|
|
datasets = {S0,S2,S4,S6,S8,S10};
|
|
datasetNames = {'0 kg','2 kg','4 kg','6 kg','8 kg','10 kg'};
|
|
|
|
%% Parameter
|
|
v_threshold = 0.005;
|
|
|
|
%% Datensätze filtern
|
|
for k = 1:length(datasets)
|
|
|
|
S = datasets{k};
|
|
|
|
% Bewegungsmaske aus ACTVELO erzeugen
|
|
moveMask = abs(S.ACTVELO.y) >= v_threshold;
|
|
|
|
% Zeit- und Bewegungsvektor
|
|
t_vel = S.ACTVELO.t;
|
|
moveFlag = double(moveMask);
|
|
|
|
signals = fieldnames(S);
|
|
|
|
fprintf('Bearbeite Datensatz %s\n', datasetNames{k});
|
|
|
|
for n = 1:length(signals)
|
|
|
|
sig = signals{n};
|
|
|
|
t = S.(sig).t;
|
|
y = S.(sig).y;
|
|
|
|
% Bewegung auf Zeitbasis interpolieren
|
|
keep = interp1( ...
|
|
t_vel, ...
|
|
moveFlag, ...
|
|
t, ...
|
|
'nearest', ...
|
|
0) > 0;
|
|
|
|
% Signal filtern
|
|
t = t(keep);
|
|
y = y(keep);
|
|
|
|
if isempty(y)
|
|
warning('%s in %s enthält nach Filterung keine Daten.', ...
|
|
sig, datasetNames{k});
|
|
continue
|
|
end
|
|
|
|
% Ursprüngliche Abtastzeit bestimmen
|
|
if length(t) > 1
|
|
dt = median(diff(t));
|
|
else
|
|
dt = 0;
|
|
end
|
|
|
|
% Neue lückenlose Zeitachse aufbauen
|
|
t_new = (0:length(y)-1)' * dt;
|
|
|
|
% Zurückschreiben
|
|
S.(sig).t = t_new;
|
|
S.(sig).y = y;
|
|
|
|
end
|
|
|
|
datasets{k} = S;
|
|
|
|
end
|
|
|
|
%% Gefilterte Datensätze zurückschreiben
|
|
[S0,S2,S4,S6,S8,S10] = datasets{:};
|
|
|
|
%% Vergleichsplots erzeugen
|
|
signals = fieldnames(S0);
|
|
|
|
for i = 1:length(signals)
|
|
|
|
signal = signals{i};
|
|
|
|
figure('Name',signal,'NumberTitle','off');
|
|
hold on
|
|
grid on
|
|
|
|
for k = 1:length(datasets)
|
|
|
|
S = datasets{k};
|
|
|
|
if isempty(S.(signal).y)
|
|
continue
|
|
end
|
|
|
|
plot( ...
|
|
S.(signal).t/1000, ...
|
|
S.(signal).y, ...
|
|
'LineWidth',1.5, ...
|
|
'DisplayName',datasetNames{k});
|
|
end
|
|
|
|
xlabel('Zeit [s]');
|
|
ylabel(signal,'Interpreter','none');
|
|
title(['Vergleich von ' signal], ...
|
|
'Interpreter','none');
|
|
|
|
legend('Location','best');
|
|
end |