Main Content

Cambiar la tasa de muestreo de una señal

Este ejemplo muestra cómo cambiar la tasa de muestreo de una señal. El ejemplo consta de dos partes. La primera parte cambia la tasa de muestreo de una entrada sinusoidal de 44,1 kHz a 48 kHz. Se trata de un flujo de trabajo común en el procesamiento de audio. La tasa de muestreo utilizada en los discos compactos es de 44,1 kHz, mientras que la tasa de muestreo utilizada en las cintas de audio digitales es de 48 kHz. La segunda parte cambia la tasa de muestreo de una muestra de voz grabada de 7418 Hz a 8192 Hz.

Cree una señal de entrada compuesta por una suma de ondas sinusoidales muestreadas a 44,1 kHz. Las ondas sinusoidales tienen frecuencias de 2, 4 y 8 kHz.

Fs = 44.1e3;
t = 0:1/Fs:1-1/Fs;
x = cos(2*pi*2000*t) + 1/2*sin(2*pi*4000*(t-pi/4)) + ...
    1/4*cos(2*pi*8000*t);

Para cambiar la tasa de muestreo desde 44,1 hasta 48 kHz, hay que determinar un número racional (relación de enteros), P/Q, de forma que P/Q por la frecuencia de muestreo original, 44100, sea igual a 48000 dentro de cierta tolerancia especificada.

Para determinar estos factores, utilice rat. Introduzca la relación entre la nueva tasa de muestreo, 48000, y la tasa de muestreo original, 44100.

[P,Q] = rat(48e3/Fs);
abs(P/Q*Fs-48000)
ans = 7.2760e-12

Comprobará que P/Q*Fs únicamente difiere de la tasa de muestreo deseada, 48000, en el orden de 10-12.

Utilice los factores del numerador y del denominador obtenidos con rat como entradas a resample para generar una forma de onda muestreada a 48 kHz.

xnew = resample(x,P,Q);

Si su ordenador puede reproducir audio, puede reproducir las dos formas de onda. Ajuste el volumen en un nivel adecuado antes de reproducir las señales. Ejecute los comandos de sound por separado para poder escuchar la señal con las dos tasas de muestreo diferentes.

% sound(x,44100)
% sound(xnew,48000)

Cambie la tasa de muestreo de una muestra de voz de 7418 Hz a 8192 Hz. La señal de voz es una grabación de un orador diciendo "MATLAB®".

Cargue la muestra de voz.

load mtlb

La carga del archivo mtlb.mat incorpora la señal de voz, mtlb, y la tasa de muestreo, Fs, al espacio de trabajo de MATLAB.

Determine una aproximación racional a la relación entre la nueva tasa de muestreo, 8192, y la tasa de muestreo original. Utilice rat para determinar dicha aproximación.

[P,Q] = rat(8192/Fs);

Vuelva a muestrear la muestra de voz con la nueva tasa de muestreo. Represente las dos señales.

mtlb_new = resample(mtlb,P,Q);

subplot(2,1,1)
plot((0:length(mtlb)-1)/Fs,mtlb)
subplot(2,1,2)
plot((0:length(mtlb_new)-1)/(P/Q*Fs),mtlb_new)

Figure contains 2 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line.

Si su ordenador cuenta con funcionalidades de salida de audio, puede reproducir las dos formas de onda en sus respectivas tasas de muestreo para compararlas. Ajuste el volumen de su ordenador a un nivel adecuado antes de reproducir las señales. Ejecute los comandos de sound por separado para comparar las muestras de voz con las diferentes tasas de muestreo.

% sound(mtlb,Fs)
% sound(mtlb_new,8192)

Consulte también