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.
fgoalattain
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
(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.fgoalattain
an 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.a
w
Para configurar un problema de consecución de objetivo, debe especificar el y para el problema.goal
weights
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.goal
fgoalattain
La longitud de es la misma que la longitud devuelta por la función.goal
filtmin
Para que los objetivos estén igualmente satisfechos, normalmente se establecería.weight
abs(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)
weight
weight
Mé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).
function y = filtmin(a,w) n = length(a); y = cos(w'*(0:n-1)*2*pi)*a ;
% 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.firpm
(Signal Processing Toolbox)Signal Processing Toolbox™
Respuesta de magnitud con coeficientes de magnitud inicial y final