Forum: PC Hard- und Software GNU OCTAVE und floating point data -> wavewrite ?


von Jo alter (Gast)


Lesenswert?

Ich schreibe einen Vektor mit Auflösung und Rate erfolgreich in eine 
Datei, Problem ist nur, dass die Quelldaten floating point sind 1234,56 
und dadurch irgendwie die Wave Datei Clipp't.

Wie kann ich den Vektor auf 16 Bit Integer normalisieren?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Mit dem Maximum auf 1.0 normieren: x/max(x)

von Jo alter (Gast)


Lesenswert?

Ich kenne mich mit der Sprache leider noch nicht aus - kannst Du mir 
auch sagen, wie ich diese Operation auf alle Elemente des Vektors 
anwende? Iterativ oder gibt es einen direkten Befehl?

von Jo alter (Gast)


Lesenswert?

y = round(y) tut's!

von Jo alter (Gast)


Lesenswert?

wavwrite nimmt normalisierte floating point samples entgegen. Nix mit 
auf 16 bit integer umrechnen..

load "messung.dat"
y = messung(:, 2);
fs = 9600
bits = 16
ymax = max(y)
wavwrite("messung.wav", y, fs, bits)

von Jo alter (Gast)


Lesenswert?

fehlt zwischendurch noch
y = (y/ymax);

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.