Nun möchte ich jedem vollen Sekundenwert den Mittelwert der zugehörigen Messwerte zuordnen. Das Problem ist, dass es unterschiedlich viele Messwerte pro Sekunde geben kann. Gibt es dafür eine effektive Lösung?
anstatt zu runden könntest du auch interpolieren. falls das auch zu einem ergebiss führt das für dich ok ist.
wenn du eine lösung mit einer schleife hast dann ist doch gut zeit in eine verschnellerung des codes zu investieren lohnt sich nur wenn die zeit die man aufwändet geringer ist als die zeit die man dann spart. _________________
wenn du unbedingt alle Werte, die innerhalb einer Sekunde vorliegen, mitteln und auf auf die aufgerundete Sekunde schreiben möchtest, dann kannst du sowas mit
accumarray
sehr effektiv lösen. Detailliert erklärte Beispiele von mir findest du hier oder hier.
Code:
% unique t-Werte und die Indizes, an denen sie auftreten [t_unique,~,idx] = unique(t_sek);
% Intervalle mitteln und endzeit-stempeln
v_acc = accumarray(idx', v',[], @mean);
Dir sollte aber klar sein, dass du mit diesem Verfahren deinem Signal eine Phasenverschiebung aufprägst, da du die Daten eines Intervalls (beispielsweise von 0 bis 1) auf die rechte Intervallgrenze schreibst.
Ansonsten schließe ich mich Winkow an und schlage
interp1
vor.
Code:
% Linear Interpolieren
v_interp = interp1(t, v, t_unique);
ihr habt natürlich Recht, eine Interpolation ist der richtige Ansatz, da dadurch die Messwerte keinen Offset bekommen (das sieht man wirklich gut an Nras' Plot). Also hab ich die Variante mit
interp1
genutzt, als Spline-Interpolation.
accumarray
habe ich aber auch noch getestet, das funktioniert natürlich auch gut, nur werden eben die Messwerte dadurch verfälscht.
Einstellungen und Berechtigungen
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
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.