B.7.22 Com relação ao Problema B.7.21, é desejável traçar apenas
para
. Escreva um programa em MATLAB para gerar esse diagrama.
Se for desejável traçar
para
, que mudanças devem ser feitas no programa em MATLAB?
Se for desejável traçar
Passo 1
O enunciado pede um programa em MATLAB que plote a resposta em frequência
para frequências positivas
. Precisamos de:
– os coeficientes do numerador e denominador de (obtidos no problema B.7.21)
– um vetor de frequências
– a função freqs para calcular
– gráficos de magnitude e de fase.
– os coeficientes do numerador e denominador de
– um vetor de frequências
– a função freqs para calcular
– gráficos de magnitude e de fase.
Passo 2
Defina em MATLAB os vetores de coeficientes do numerador e do denominador de
. Por exemplo, se
então no script faça:
b = [b2 b1 b0]; % substitua b2,b1,b0 pelos valores obtidos
a = [a2 a1 a0]; % substitua a2,a1,a0 pelos valores obtidos
Passo 3
Constitua um vetor de frequências positivas. Por exemplo, usando escala logarítmica:
omega = logspace(-1,2,1000); % de 10^-1 a \(10^2\) rad/s, 1000 pontos
Passo 4
Calcule a resposta em frequência e extraia magnitude e fase:
H = freqs(b,a,omega); % H(jω) para cada valor de omega
magH = abs(H); % |H(jω)|
phaseH = angle(H)*180/pi; % fase em graus
Passo 5
Trace os gráficos de magnitude e fase:
figure
subplot(2,1,1)
loglog(omega,magH)
grid on
xlabel('\omega (rad/s)')
ylabel('|H(j\omega)|')
title('Magnitude de H(j\omega)')
subplot(2,1,2)
semilogx(omega,phaseH)
grid on
xlabel('\omega (rad/s)')
ylabel('Fase (graus)')
title('Fase de H(j\omega)')
Passo 6
Para plotar em todo o eixo real de frequência
, basta estender o vetor
omega para incluir valores negativos simétricos. Por exemplo, logo após gerar o omega positivo, faça:omega = [-fliplr(omega) omega]; % simétrico em torno de zero
H = freqs(b,a,omega); % recalcula H(jω) para ω negativo e positivo
% em seguida repete o plot acima usando o novo vetor omega e H
Resposta
% Passo 2: coeficientes de H(s)=Y1(s)/U1(s)
b = [b2 b1 b0]; % numerador
a = [a2 a1 a0]; % denominador
% Passo 3: frequências positivas
omega = logspace(-1,2,1000);
% Passo 4: resposta em frequência
H = freqs(b,a,omega);
magH = abs(H);
phaseH = angle(H)*180/pi;
% Passo 5: plota magnitude e fase
figure
subplot(2,1,1)
loglog(omega,magH)
grid on
xlabel('\omega (rad/s)')
ylabel('|H(j\omega)|')
title('Magnitude de H(j\omega)')
subplot(2,1,2)
semilogx(omega,phaseH)
grid on
xlabel('\omega (rad/s)')
ylabel('Fase (graus)')
title('Fase de H(j\omega)')
% Passo 6: para -∞<ω<∞
omega = [-fliplr(omega) omega]; % inclui frequências negativas
H = freqs(b,a,omega);
% repita o plot acima com o novo omega e H