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

Resampling

 

Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2015, 16:22     Titel: Resampling
  Antworten mit Zitat      
Hallo allerseits,

ich beschäftige mich gerade mit einem Signal, welches ich von 44100 Hz Samplerate auf 96000 Hz resamplen möchte.

Das Resamplen an sich ist nicht das Problem, sondern die Bedingungen, die beim Resamplen eingehalten werden müssen:

1) Ich möchte die originalen Sampledaten des Wav-Signals beibehalten.
2) die originalen Sampledaten dürfen nicht verdoppelt werden, d.h. es muss immer zwischen den originalen Sampledaten interpoliert werden.

Dafür habe ich folgenden Code generiert:

Code:

% z.B.:

y = rand(10,1); % Signal
x_Idx = (1:length(y))';
NrofSamples = length(y);
SamplerateOriginal = 10;
SamplerateNew = SamplerateOriginal*3;
Factor = SamplerateNew/ SamplerateOriginal;

x_IdxNew = linspace(1+(1*10^-4), NrofSamples-(1*10^-4), round(NrofSamples*Factor)-NrofSamples)';
sort_xIdx = sort([x_Idx; x_IdxNew]);
Up_SampleData = interp1(y, sort_xIdx);
figure;
plot(x_Idx, y, 'o', sort_xIdx, Up_SampleData, 'x');
 


Jetzt möchte ich wissen, ob damit die beiden Bedingungen eingehalten werden. Irgendwie kriege ich es nicht hin das zu überprüfen. Denn ich habe bei komplexen Signalen gemerkt, dass im Workspace manche Werte (Samples) doppelt aufgeführt werden, z.B. [0.3, 0.3], obwohl es wie folgt aussehen sollte: [0.299999999999, 0.3].

Nun stellt sich mir die Frage, wird nur im Workspace gerundet, um die Daten übersichtlich zu halten oder werden die Werte tatsächlich gerundet?

Sollte das Erstere der Fall sein, ist für mich nicht klar ob "wavwrite" die Werte auch genauso in eine Datei schreibt. Ich vermute, dass es mit der Bit-Auflösung zusammen hängt, oder?

Gibt es evtl. eine bessere Lösung?

Vielen Dank schonmal für die Hilfe!


Bella

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.01.2015, 10:49     Titel:
  Antworten mit Zitat      
Mir ist aufgefallen, dass das Thema zu dieser Rubrik gar nicht passt.

Abgesehen davon hab ich nun folgendes raus gefunden:

für das höher Samplen eines Audio-Signals von z.B. 44100 Hz auf 96000 Hz muss das Audio-Signal scheinbar nicht nur linear interpoliert, sondern auch durch einen Lowpass-Filter geschickt werden.

Dafür gibt es schon eine fertige Matlabfunktion "resample".

Beispiel:
Code:
 
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.