WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

"Manuelles glätten" mit for-Schleife schlechte Pe

 

dant
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 16.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2018, 12:45     Titel: "Manuelles glätten" mit for-Schleife schlechte Pe
  Antworten mit Zitat      
Liebe Community,

ich versuche eine relative alltägliche Funktion umzusetzen, die auf dem Code entsprechenden Weg zu funktionieren scheint. Allerdings ist die Umsetzung mit for-loop sehr sehr langsam. Bei der Konversion zum parfor-loop oder bei der Vektorisierung bin ich bislang gescheitert.

data ... Kurvenverlauf
interval ... es soll immer ein Intervall an Datenpunkten betrachtet werden. Der Mittelwert der Datenpunkte dieses Intervalls dient als neuer Wert für alle Datenpunkte innerhalb dieses Intervalls. Ein glatter Kurvenverlauf data_smooth soll entstehen.

Code:
for i=1:size(data)-interval
 data_smooth(i:interval+i) = mean(data(i:interval+i));
 i = i+interval-1;
end


Vermutlich steh ich einfach auf der langen Leitung Embarassed und freue mich über einen Vorschlag. Danke schon mal
Private Nachricht senden Benutzer-Profile anzeigen


DerElch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2018, 13:26     Titel:
  Antworten mit Zitat      
Zunächst ein paar allgemeine Dinge
Die Performance von for steht und fällt mit PreAllocation. Also zuerst ein großes nan-Array bauen und dann die jeweiligen Werte ersetzen.
Der mean Befehl ist sehr sehr langsam, mit sum und dann durch die Anzahl dividieren bist du schneller (zumindest in 2009b, 2017b habe ich es noch nicht getestet)
Anstatt mit dem i herumzubasteln danach einfach alle nan-Werte nachher löschen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.03.2018, 17:52     Titel:
  Antworten mit Zitat      
Hallo,

es gibt dafür den fertigen Befehl movmean , der um Welten schneller sein dürfte als die for-Schleife.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.