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

Gleitender Mittelwert

 

HAL-9000
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 05.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 09:07     Titel: Gleitender Mittelwert
  Antworten mit Zitat      
Mein erster Beitrag als Neuling, mit der Hoffnung etwas erleuchtet zu werden.

Ich habe via conv den gleitenden Mittelwert einer Messreihe (y, testweise die Amplitude einer Sinusfunktion) gebildet

Code:
f1 = y;                    
h = ones(1, sr_p); % sr_p --> samples per periode
f2 = h./sum(h);
f3 = conv(abs(f1), f2);


Meine Eingangsmatrix y (Amplituden-Samples / x-Achse) hat die Größe 1x2000.
Nach der Faltung hat die Ausgangsmatrix f3 die Größe 1x2019 (also um die Länge von h vergrößert). Problem ist jetzt die f3 über den ursprünglichen Zeitstrahl zu plotten, da sich die Größen nicht gleichen, nachdem ich f3 wieder um h beschnitten habe.
Vllt. kann mir jemand bei der Lösung bzw. Klärung der zugrunde liegenden Mathematik etwas helfen.

Cheers...

Zuletzt bearbeitet von HAL-9000 am 19.10.2011, 09:18, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 19.10.2011, 09:18     Titel:
  Antworten mit Zitat      
Siehe in der Hilfe zur conv:

Zitat:
C = conv(...,'shape') returns a subsection of the convolution, as specified by the shape parameter:

full

Returns the full convolution (default).

same

Returns the central part of the convolution of the same size as A.

valid

Returns only those parts of the convolution that are computed without the zero-padded edges. Using this option, length(c) is max(length(a)-max(0,length(b)-1),0).



--> 'same' sollte Abhilfe schaffen!
Private Nachricht senden Benutzer-Profile anzeigen
 
HAL-9000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 05.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2011, 09:42     Titel:
  Antworten mit Zitat      
Kann es sein das du
Code:

meintest?

Kannte ich noch nicht! Werde es umgehend umsetzen und berichten.

Danke

[edit] wahrscheinlich versionsbedingt. Ich habe R2007b
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 19.10.2011, 10:09     Titel:
  Antworten mit Zitat      
Nein, ich meinte eigentlich conv().

Siehe hierzu auch
http://www.mathworks.de/help/techdoc/ref/conv.html

Ansonsten kannst du den einen fehlenden Wert auch entweder einfach interpolieren, mit 0, NaN oder Inf füllen.

EDIT: Oder natürlich abschneiden, siehe Post von DSP unten.

Zuletzt bearbeitet von eupho am 19.10.2011, 10:39, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.10.2011, 10:34     Titel:
  Antworten mit Zitat      
Es ist nicht ganz um h länger. Der Faltungssatz lautet:

Code:

% Anzahl Messwerte f3 = length(f1) + length(f2) -1
f1 = y;                    
h = ones(1, sr_p); % sr_p --> samples per periode
f2 = h./sum(h);
f3 = conv(abs(f1), f2); % warum hier abs(f1)??
f3 = (1:length(f1)); % Ausschwingvorgang abschneiden
 


Bei der Faltung des Signals mit h (=Filterimpulsantwort) gibt es einen Einschwingvorgang, stationärer Zustand und Ausschwingvorgang. In der Regel schneidet man den Ausschwingvorgang (length(h)-1) ab.
Private Nachricht senden Benutzer-Profile anzeigen
 
HAL-9000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 05.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2011, 07:25     Titel:
  Antworten mit Zitat      
Vielen Dank nochmal! 'same' bringt erstmal das Resultat mit dem ich weiter arbeite.

Nochmal zum Versionsunterschied:

Code:

sieht bei der R2007b so aus.



Gruß...
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 - 2025 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.