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

Optimierung von Fensterung

 

derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 19.03.2008, 20:39     Titel: Optimierung von Fensterung
  Antworten mit Zitat      
Schönen Guten Tag,

bin neu hier im Forum und hab auch gleich mal ne Frage:

Ich fenstere Zurzeit ein Signal und speichere die Ergebnisse in einer neuen Matrix. Benutzte dazu eigentlich immer
Code:
x=[x,vektor]
wenn x vorher leer war und vektor ist ein vektor immer gleicher länge. Allerdings scheint das ziemlich rechenaufwendig zu sein. Gibt es da ne bessere Lösung mit gleichem Ergebnis?
Hier der ganze Code:
Code:
tic
%% Building Frames
number = fix((length(d)-wsize)/hsize)-1; %+1;%number of frames
%spectt=[]; %%set full spectrum /just temporally
fr=[];
E=[];
tic
for i=0:(number-1) %cycles=number of frames

    frame = (d((i*hsize+1):(i*hsize+wsize)))*win; %multiply with window in the time base range,make the frame to analyse
 
    E=[E,log(sum(frame.^2))]; %energy transformation
    fr=[fr,frame];
end;
toc
toc

win=1; also Rechteckfenster. Das Problem scheint wirklich fr=... zu sein, da ich den rest mal weggelassen hab und immernoch 6 Sekunden für 15 Sekunde Input brauche (Sound).
Private Nachricht senden Benutzer-Profile anzeigen


steffi
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 07.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2008, 16:50     Titel:
  Antworten mit Zitat      
Ich hab (noch) nicht so richtig viel Ahnung von Signalverarbeitung, Fensterung usw., aber wenn du weißt, wie groß deine Matrix x werden wird, kannst du diese voher anstelle von x=[] definieren. Also z.B. x=zeros(n,m).
Dann überschreibst du in jedem Schleifenaufruf die i-te Spalte oder Zeile (je nachdem wie du magst) mit deinem vektor.
Das macht das ganze zumindest schneller! Glaube so wird nur die jeweilige Zeile neu geschrieben, in deiner Variante wird jedesmal die ganze Matrix neu geschrieben, das dauert länger....

Hoffe ich konnte helfen?!
_________________

Wenn ich bei der Arbeit mit Computern eins gelernt habe dann das ich einem Computer nur soweit traue wie ich ihn werfen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ritter_vom_Nie
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.08
Wohnort: Hamburg
Version: R2007b
     Beitrag Verfasst am: 20.03.2008, 22:48     Titel:
  Antworten mit Zitat      
Steffi hat da schon recht!
Zumal du über die Länge des Eingangssignals und des Fensters eigentlich alle Dimensionen hast, die du benötigst.

In deinem kleinen Code-Ausschnitt kannst du dir doch auch die Fensterung sparen? Eine Multiplikation mit 1?
Kann natürlich sein, dass du später auf eine andere Fensterfunktion wechseln willst, das weiß ich jetzt halt nicht. Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 22.03.2008, 11:15     Titel:
  Antworten mit Zitat      
Dankeschön für die Antworten.
Die Matrix vordefinieren werd ich mal versuchen. Das mit dem Fenster ist schon richtig. Das hab ich aber auch schon versucht wegzulassen. Ohne Zeitauswirkung. Ja also es geht darum später auch ein anderes Fenster zu benutzen.

Ich schreib dann mal wieviel Zeit ich gespart hab.
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Themenstarter

Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 31.03.2008, 10:34     Titel:
  Antworten mit Zitat      
Ja das hat geklappt, danke für die Hilfe. Hab allerdings immernoch solche Schnippsel in dem Code. Allerdings weiß ich da nicht wie ich das verbessern kann weil ich da ja vorher die größe nicht kenne. Sollte aber nicht das Problem sein weil das jeweils nur ein wert ist.
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.