2016-06-05 3 views
1

Ich upsampling ein Signal von 100k bis 30M Proben mit upsample Funktion von MATLAB. Aber wenn ich resample Funktion benutze, ist die Ausgabe unterschiedlich. Wie kann ich resample verwenden, um exakte Ausgabe wie die upsample Funktion zu erhalten?passend zu den Ausgaben von upsample und resample Funktionen von Matlab

+0

Ich bin kein Experte hier, aber ich denke, Ihr Beispiel könnte ein wenig helfen. :) –

+0

Hier out_I Signal ist Gaussain gefiltert. out_I_up = upsample (out_I, 5000); xx = 300 * fir1 (100,1/5000); % Ordnung N = 100, Grenzfrequenz = 1/300 out_i = Filter (xx, 1, out_I_up); Kann ich es nicht mit ?? ersetzen? out_i = resample (out_I, 3000,1); –

Antwort

3

Sie können nicht, da sie verschiedene Dinge tun.

upsample fügt nur Nullen zwischen Ihren Samples ein, während resample einen Anti-Aliasing-Filter anwendet und interpoliert.

So zum Beispiel, wenn das Signal ist x=[1,1], upsample(x,2) ausgeben werden 1,0,1,0, während resmaple(x,2,1)1, 1.26, 1, 0.43 Ausgänge, die das Ergebnis der Filterung und Interpolation ist.

+0

Hier out_I Signal ist Gaussain gefiltert. out_I_up = upsample (out_I, 5000); xx = 300 * fir1 (100,1/5000); % Ordnung N = 100, Grenzfrequenz = 1/300 out_i = Filter (xx, 1, out_I_up); Kann ich es nicht mit ?? ersetzen? out_i = resample (out_I, 3000,1); –

+0

Nein, weil Ihr Code im Kommentar nur einen Tiefpassfilter (den Anti-Aliasing-Schritt) enthält, nicht die Interpolation. Außerdem ist es wahrscheinlich nicht identisch mit dem Anti-Aliasing, das von 'resample' angewendet wird. Lesen Sie die Dokumentation, um sicher zu sein –

+0

vielen Dank! :) –