Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

rcosdesign

Diseño de filtro de forma de pulso FIR coseno elevado

Descripción

ejemplo

b = rcosdesign(beta,span,sps) devuelve los coeficientes, , que corresponden a un filtro FIR coseno de raíz cuadrada con factor de rolloff especificado por .bbeta El filtro se trunca en símbolos y cada período de símbolo contiene muestras.spansps El orden del filtro, , debe ser par.sps*span La energía del filtro es 1.

ejemplo

b = rcosdesign(beta,span,sps,shape) devuelve un filtro de coseno elevado de raíz cuadrada cuando se establece en y un filtro FIR coseno elevado normal cuando se establece en .shape'sqrt'shape'normal'

Ejemplos

contraer todo

Especifique un factor de despliegue de 0,25. Truncar el filtro a 6 símbolos y representar cada símbolo con 4 muestras. Compruebe que es el valor predeterminado del parámetro.'sqrt'shape

h = rcosdesign(0.25,6,4); mx = max(abs(h-rcosdesign(0.25,6,4,'sqrt')))
mx = 0 
fvtool(h,'Analysis','impulse')

Compare un filtro de coseno elevado normal con un filtro de coseno de raíz cuadrada. Un filtro de modelado de pulsos de coseno elevado normal ideal (longitud infinita) es equivalente a dos filtros de coseno elevados de raíz cuadrada ideal es equivalente a dos filtros de coseno elevados de raíz cuadrada ideales en cascada. Por lo tanto, la respuesta de impulso de un filtro normal FIR debe parecerse a la de un filtro de raíz cuadrada contravenado consigo mismo.

Cree un filtro de coseno elevado normal con rolloff 0.25. Especifique que este filtro abarque 4 símbolos con 3 muestras por símbolo.

rf = 0.25; span = 4; sps = 3;  h1 = rcosdesign(rf,span,sps,'normal'); fvtool(h1,'impulse')

El filtro normal tiene cero cruces en múltiplos enteros de .sps Por lo tanto, satisface el criterio de Nyquist para cero interferencia intersímbolo. El filtro de raíz cuadrada, sin embargo, no:

h2 = rcosdesign(rf,span,sps,'sqrt'); fvtool(h2,'impulse')

Convolve el filtro de raíz cuadrada consigo mismo. Truncar la respuesta de impulso hacia fuera desde el máximo para que tenga la misma longitud que .h1 Normalice la respuesta utilizando el máximo. A continuación, compare el filtro de raíz cuadrada convolución con el filtro normal.

h3 = conv(h2,h2); p2 = ceil(length(h3)/2); m2 = ceil(p2-length(h1)/2); M2 = floor(p2+length(h1)/2); ct = h3(m2:M2);  stem([h1/max(abs(h1));ct/max(abs(ct))]','filled') xlabel('Samples') ylabel('Normalized amplitude') legend('h1','h2 * h2')

La respuesta convocada no coincide con el filtro normal debido a su longitud finita. Aumentar para obtener un acuerdo más estrecho entre las respuestas y un mejor cumplimiento del criterio Nyquist.span

Este ejemplo muestra cómo pasar una señal a través de un filtro de coseno de raíz cuadrada elevado.

Especifique los parámetros de filtro.

rolloff = 0.25;     % Rolloff factor span = 6;           % Filter span in symbols sps = 4;            % Samples per symbol

Genere los coeficientes de filtro de coseno de raíz cuadrada elevados.

b = rcosdesign(rolloff, span, sps);

Cree un vector de datos bipolares.

d = 2*randi([0 1], 100, 1) - 1;

Muestree y filtre los datos para el modelado de pulsos.

x = upfirdn(d, b, sps);

Añade ruido.

r = x + randn(size(x))*0.01;

Filtre y muestree la señal recibida para el filtrado coincidente.

y = upfirdn(r, b, 1, sps);

En este ejemplo se muestra cómo interpolar y diezmar las señales mediante filtros de coseno elevados de raíz cuadrada diseñados con la función.rcosdesign Este ejemplo requiere el software ™ Communications Toolbox.

Defina los parámetros del filtro de coseno elevado de raíz cuadrada. Defina los parámetros de la constelación de señales.

rolloff = 0.25; % Filter rolloff span = 6;       % Filter span sps = 4;        % Samples per symbol M = 4;          % Size of the signal constellation k = log2(M);    % Number of bits per symbol

Genere los coeficientes del filtro de coseno elevado de raíz cuadrada utilizando la función.rcosdesign

rrcFilter = rcosdesign(rolloff, span, sps);

Genere 10000 símbolos de datos utilizando la función.randi

data = randi([0 M-1], 10000, 1);

Aplique la modulación PSK a los símbolos de datos. Debido a que el tamaño de la constelación es 4, el tipo de modulación es QPSK.

modData = pskmod(data, M, pi/4);

Con la función, muestree y filtre los datos de entrada.upfirdn

txSig = upfirdn(modData, rrcFilter, sps);

Convierta el Eb/N0 al SNR y después pase la señal a través de un canal AWGN.

EbNo = 7; snr = EbNo + 10*log10(k) - 10*log10(sps); rxSig = awgn(txSig, snr, 'measured');

Filtrar y reducir la muestra de la señal recibida. Elimine una parte de la señal para tener en cuenta el retardo del filtro.

rxFilt = upfirdn(rxSig, rrcFilter, 1, sps); rxFilt = rxFilt(span+1:end-span);

Cree una gráfica de dispersión de los datos modulados utilizando los primeros 5000 símbolos.

hScatter = scatterplot(sqrt(sps)* ...     rxSig(1:sps*5000),...     sps,0,'g.'); hold on scatterplot(rxFilt(1:5000),1,0,'kx',hScatter) title('Received Signal, Before and After Filtering') legend('Before Filtering','After Filtering') axis([-3 3 -3 3]) % Set axis ranges hold off

Argumentos de entrada

contraer todo

Factor de desconexión, especificado como un escalar no negativo real no mayor que 1. El factor rolloff determina el exceso de ancho de banda del filtro. Zero rolloff corresponde a un filtro de pared de ladrillo y un desconexión de la unidad a un coseno elevado puro.

Tipos de datos: double | single

Número de símbolos, especificado como un escalar entero positivo.

Tipos de datos: double | single

Número de muestras por símbolo (factor de sobremuestreo), especificado como un escalar entero positivo.

Tipos de datos: double | single

Forma de la ventana de coseno elevada, especificada como o .'normal''sqrt'

Argumentos de salida

contraer todo

Coeficientes de filtro de coseno elevados, devueltos como vector de fila.

Tipos de datos: double | single

Sugerencias

  • Si tiene una licencia de software, puede realizar el filtrado de coseno generado multirate con el comportamiento de streaming.Communications Toolbox™ Para ello, utilice los filtros y .System object™comm.RaisedCosineTransmitFiltercomm.RaisedCosineReceiveFilter

Referencias

[1] Tranter, William H., K. Sam Shanmugan, Theodore S. Rappaport, and Kurt L. Kosbar. Principles of Communication Systems Simulation with Wireless Applications. Upper Saddle River, NJ: Prentice Hall, 2004.

Capacidades ampliadas

Consulte también

Introducido en R2013b