Estoy tratando de trazar una función de transferencia, y trazar la magnitud parece mostrar que es un filtro de paso de banda, lo que parece razonable.
El problema es que la gráfica de fase no coincide en absoluto con la gráfica de magnitud. La gráfica de fase se parece a la gráfica de magnitud invertida. ¿Cómo es esto posible?
He adjuntado mi código de Matlab y una figura.
(la gráfica superior es la magnitud y la gráfica inferior es la fase)
Aquí también está mi código Matlab y la función que quiero trazar. Mi pregunta es: ¿qué está mal con mi código y cómo es esto posible en general?
numElem = 2000;
w = linspace(1,2*pi*10^20,numElem);
wRes = 2*pi*10^9;
%%Insert wRes (resonant frequency)
for n = 1:numElem
if w(n) > wRes
w = [w(1:n - 1), wRes, w(n:numElem)];
resLocation = n;
break
end
end
freq = w ./ (2*pi);
lambda = 299792458 ./ freq;
%Beta
B = pi/2 .* w ./wRes;
B(resLocation) = pi/2;
%Distance
d = lambda ./ 4;
Z0 = 50; %Ohms
C = 10^(-12);
L = 1/(wRes^2*C);
Zl = 1 ./ (j .* w .* C + 1 ./ (j .* w .* L));
y = 1./((Z0./Zl).^2 .* j.*sin(B .* d)/2 + exp(j .* B .* d).*(1 + Z0 ./ Zl))
Amplitude=20*log10(abs(y));
phase = angle(y)*180/pi;
subplot(211)
semilogx(w,Amplitude)
subplot(212)
semilogx(w,phase)
El uso de un espaciado lineal para las muestras en una gráfica logarítmica da un resultado extraño porque en la gráfica los puntos ya no están igualmente espaciados. Modificar el código para mostrar los puntos calculados revela el problema:
Es mejor usar un espacio logarítmico como se muestra a continuación. También he desenvuelto la fase.
numElem = 2000;
%% --> w = linspace(1,2*pi*10^20,numElem);
w = logspace(0, log10(2*pi*10^20), numElem);
wRes = 2*pi*10^9;
%%Insert wRes (resonant frequency)
for n = 1:numElem
if w(n) > wRes
w = [w(1:n - 1), wRes, w(n:numElem)];
resLocation = n;
break
end
end
freq = w ./ (2*pi);
lambda = 299792458 ./ freq;
%Beta
B = pi/2 .* w ./wRes;
B(resLocation) = pi/2;
%Distance
d = lambda ./ 4;
Z0 = 50; %Ohms
C = 10^(-12);
L = 1/(wRes^2*C);
Zl = 1 ./ (j .* w .* C + 1 ./ (j .* w .* L));
y = 1./((Z0./Zl).^2 .* j.*sin(B .* d)/2 + exp(j .* B .* d).*(1 + Z0 ./ Zl))
Amplitude=20*log10(abs(y));
%% --> phase = angle(y)*180/pi;
phase = unwrap(angle(y))*180/pi;
subplot(211)
semilogx(w,Amplitude, ':*')
subplot(212)
semilogx(w,phase, ':*')
Chu