|
|
Wave-Daten von DirectX nach Matlab |
|
Dr.Nick |

Forum-Anfänger
|
 |
Beiträge: 34
|
 |
|
 |
Anmeldedatum: 04.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.01.2011, 18:11
Titel: Wave-Daten von DirectX nach Matlab
|
 |
Hallo zusammen,
ich habe eine Matlab-Funktion kompiliert und möchte sie jetzt in C# einsetzen. Dafür sollen mit DirectX wave-Daten von einem Mikrofon aufgenommen werden und an die Matlab-Funktion zur Analyse weitergegeben werden.
Problematisch wird dies jedoch dadurch, dass DirectX und Matlab scheinbar völlig verschiedene Arten von waves haben. Der Wertebereich in DirectX geht meinen Tests zu Folge auf jeden Fall bis über 3E38, während er in Matlab laut http://www.mathworks.com/help/techdoc/ref/wavread.html für 16-Bit waves von -32768 bis +32767 geht.
Wie ist es möglich die wave-Daten vom DirectX- ins Matlab-Format zu konvertieren?
Viele Grüße und schonmal vielen Dank
Nick
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.01.2011, 21:52
Titel: Re: Wave-Daten von DirectX nach Matlab
|
 |
Hallo Dr.Nick,
3e38 klingt nach 96-Bit Wav-Daten. Alle Achtung. Benötigst Du eine so große Auflösung? Wenn nicht, könntest Du ja die Töne mit niedrigerer Auflösung aufzeichnen.
Ansonsten kann man die Auflösung durch einfaches Dividieren verkleinern.
Gruß, Jan
|
|
|
Dr.Nick |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 34
|
 |
|
 |
Anmeldedatum: 04.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.01.2011, 12:01
Titel:
|
 |
Hi,
da hast du wohl recht. Ich bin momentan auch etwas verwirrt. Eigentlich zeichne ich als 16 Bit auf. Dabei wird dann scheinbar jedes Byte in ein Float gespeichert. Das heißt, ein Sample befindet sich in zwei so großen Floats. Momentan überlege ich auch noch, wie ich die beiden floats, die ein einzelnes Sample speichern, in einem zusammenfasse. Das müsste ja eigentlich möglich sein, weil 1 float = 4 Byte und 1 Sample = 2 Byte sind. Für Tips hierzu wäre ich auch sehr dankbar, bin aber wahrscheinlich in einem DirectX-Forum besser aufgehoben...
Wenn dieser Schritt gemacht ist, müsste das mit dem Dividieren eigentlich ohne Probleme klappen. Danke für die Antwort!
|
|
|
|
|
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.
|
|