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.

Procesamiento de señal utilizandofgoalattain

Considere diseñar un filtro de respuesta de impulsos finitos (FIR) de fase lineal. El problema es diseñar un filtro de paso bajo con magnitud uno en todas las frecuencias entre 0 y 0,1 Hz y magnitud cero entre 0,15 y 0,5 Hz.

La respuesta de frecuencia () para un filtro de este tipo se define medianteHf

H(f)=n=02Mh(n)ej2πfn=A(f)ej2πfM,A(f)=n=0M1a(n)cos(2πfn),(1)

Where () es la magnitud de la respuesta de frecuencia.Af Una solución consiste en aplicar un método de consecución de objetivo a la magnitud de la respuesta de frecuencia. Dada una función que calcula la magnitud, intentará variar los coeficientes de magnitud () hasta que la respuesta de magnitud coincida con la respuesta deseada dentro de cierta tolerancia.fgoalattainan La función que calcula la respuesta de magnitud se da en.filtmin.m Esta función utiliza los coeficientes de la función de magnitud y la discretización del dominio de frecuencia de interés.aw

Para configurar un problema de consecución de objetivo, debe especificar el y para el problema.goalweights Para las frecuencias entre 0 y 0,1, el objetivo es uno. Para las frecuencias entre 0,15 y 0,5, el objetivo es cero. No se especifican las frecuencias entre 0,1 y 0,15, por lo que no se necesitan objetivos ni pesos en este rango.

Esta información se almacena en la variable pasada a.goalfgoalattain La longitud de es la misma que la longitud devuelta por la función.goalfiltmin Para que los objetivos estén igualmente satisfechos, normalmente se establecería.weightabs(goal) Sin embargo, dado que algunos de los objetivos son nulos, el efecto del uso obligará a que los objetivos con 0 se cumplan como restricciones duras, y los objetivos con 1 posiblemente sean subalcanzados (ver).weight=abs(goal)weightweightMétodo de consecución de objetivo Debido a que todos los objetivos están cercanos en magnitud, el uso de una unidad para todos los objetivos les dará la misma prioridad.weight (Usar para los pesos es más importante cuando la magnitud de difiere más significativamente.)abs(goal)goal Además, establecer

options = optimoptions('fgoalattain','EqualityGoalCount',length(goal)); 

Especifica que cada objetivo debe ser lo más cercano posible a su valor objetivo (ni mayor ni menor que).

Paso 1: escribir un archivo filtmin. m

function y = filtmin(a,w) n = length(a); y = cos(w'*(0:n-1)*2*pi)*a ;

Paso 2: invocar la rutina de optimización

% Plot with initial coefficients a0 = ones(15,1); incr = 50; w = linspace(0,0.5,incr);  y0 = filtmin(a0,w); clf, plot(w,y0,'-.b'); drawnow;  % Set up the goal attainment problem w1 = linspace(0,0.1,incr) ; w2 = linspace(0.15,0.5,incr); w0 = [w1 w2]; goal = [1.0*ones(1,length(w1)) zeros(1,length(w2))]; weight = ones(size(goal));   % Call fgoalattain options = optimoptions('fgoalattain','EqualityGoalCount',length(goal)); [a,fval,attainfactor,exitflag]=fgoalattain(@(x)filtmin(x,w0),...     a0,goal,weight,[],[],[],[],[],[],[],options);  % Plot with the optimized (final) coefficients y = filtmin(a,w); hold on, plot(w,y,'r') axis([0 0.5 -3 3]) xlabel('Frequency (Hz)') ylabel('Magnitude Response (dB)') legend('initial', 'final') grid on

Compare la respuesta de magnitud calculada con los coeficientes iniciales y los coeficientes finales ().Respuesta de magnitud con coeficientes de magnitud inicial y final Tenga en cuenta que podría utilizar la función en el software para diseñar este filtro.firpmSignal Processing Toolbox™

Respuesta de magnitud con coeficientes de magnitud inicial y final

Consulte también

Temas relacionados