|
|
Signalverarbeitung\-verwertung einer Wave Datei |
|
MatLuk |

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 05.12.13
|
 |
|
 |
Wohnort: Bielefeld
|
 |
|
 |
Version: R2013b
|
 |
|
|
 |
|
Verfasst am: 05.12.2013, 14:24
Titel: Signalverarbeitung\-verwertung einer Wave Datei
|
 |
Hallo,
ich habe mal eine Frage zur Auswertung eines großen Datenvelktors und zwar habe ich für eine Studienarbeit eine Wavedatei aufgenommen, die ich nun Auswerten muss.
Letztendlich habe ich in Matlab einen 1910000x1 Vekor und kann diesen auch vernünftig filtern und weiterverarbeiten. Jedoch stecke ich im Moment in folgender Problematik fest:
--> Und zwar Möchte ich gerne einen Zähler programmieren, der jedesmal wenn der Vektorwert ca. 10 Einheiten über 0,5 (Vektorwerte 0 - 1) liegt, einen Wert hochzählt. Dies soll er nun mit dem Gesamten Vektor machen.
Hat jemand von euch vielleicht ein Tipp wie ich das am besten machen kann? So schwierig sollte es an sich ja nicht sein aber im Moment komme ich einfach auf keine ganzheitliche Lösung.
Danke schonmal im Vorraus
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.12.2013, 23:56
Titel: Re: Signalverarbeitung\-verwertung einer Wave Datei
|
 |
Hallo MatLuk,
Was hast Du denn bisher probiert und welche konkreten Probleme gab es dabei?
Zitat: |
Und zwar Möchte ich gerne einen Zähler programmieren, der jedesmal wenn der Vektorwert ca. 10 Einheiten über 0,5 (Vektorwerte 0 - 1) liegt, einen Wert hochzählt. |
Das verstehe ich noch nicht. "Circa" lässt sich nur extrem schwer als Programm implementieren. Kannst Du eine genaue Definition posten, was berechnet werden soll?
Gruß, Jan
|
|
|
MatLuk |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 05.12.13
|
 |
|
 |
Wohnort: Bielefeld
|
 |
|
 |
Version: R2013b
|
 |
|
|
 |
|
Verfasst am: 06.12.2013, 12:21
Titel:
|
 |
Danke erstmal für die schnelle Antwort!
Ich probiere mich mal deutlicher auszudrücken.
Ich habe einen Vektor A=[1x1910000], die Daten des Vektors liegen zwischen 0 und 1. Nun möchte ich wenn der Vektor für 10 Einheiten den Wert x>0.5 annimmt einen Zähler hochzählen.
Meine Idee wäre nun einen Vergleichsvekor zu bauen --> B=[.5,.5,.5,.5,.5,.5,.5,.5,.5,.5]
und diesen jeweils mit dem A zu vergleichen. Praktisch
if B < A(1:10);
then counter= counter+1;
Die sollte durch den ganzen Vektor gehen und genau da ist mein Problem.
Ich habe im Moment leider noch keine Idee wie ich das für den gesamten Vektor automatisiere.
Danke schonmal für die Mühe
Grüße Lukas
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 06.12.2013, 12:45
Titel:
|
 |
Hallo,
sowas sollte gehen.
Es gibt aber sicherlich noch eine Möglichkeit ohne Schleife, die vermutlich mit C = A>threshold anfängt und dann mit diff, cumsum und find auskommt. Aber der Code läuft in wenigen Sekunden durch...
Allerdings, wenn nun zum Beispiel 12 Werte in Folge größer als 0.5 sind, dann wird der counter 3 mal hochgezählt. Ist das beabsichtigt, oder soll das dann nur ein mal gezählt werden?
Viele Grüße,
Nras
|
|
|
MatLuk |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 05.12.13
|
 |
|
 |
Wohnort: Bielefeld
|
 |
|
 |
Version: R2013b
|
 |
|
|
 |
|
Verfasst am: 06.12.2013, 14:47
Titel:
|
 |
Dank dir
Das hilft mir schonmal weiter, hedoch möchte ich dann erst wieder auf den nächsten Peak zählen.
Also der Counter soll erst wieder hochzählen, wenn das nächste der Vergleich passt.
Wie stell ich das am esten an?
Danke schonmal für die schnelle Hilfe!!
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 06.12.2013, 15:28
Titel:
|
 |
Hallo,
na du könntest zum Beispiel eine zusätzliche Variable einführen (imEvent), in der zu jedem Schritt der Zustand gespeichert ist, ob man sich gerade in so einem Event (10 in Folge >= 0.5) befindet, oder nicht. Wenn das der Fall ist, dann wird nicht hochgezählt.
Geht vielleicht eleganter, sollte aber so funktionieren.
|
|
|
MatLuk |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 05.12.13
|
 |
|
 |
Wohnort: Bielefeld
|
 |
|
 |
Version: R2013b
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 11:31
Titel:
|
 |
Danke für die Beiden schnellen Antworten!
Mein Problem ist soweit gelöst!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 15:03
Titel:
|
 |
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 09.12.2013, 15:51
Titel:
|
 |
Hallo,
Nras hat Folgendes geschrieben: |
Es gibt aber sicherlich noch eine Möglichkeit ohne Schleife, die vermutlich mit C = A>threshold anfängt und dann mit diff, cumsum und find auskommt. |
... da ist sie ja .
Aber Achtung, so sollte man allerdings auch die Serien von Nullen in data>0.5 finden. Die sollen ja nicht gezählt werden. Da dürfte
helfen (ungetestet).
Viele Grüße.
Nras.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|