Visualización de diagramas de Bode en matlab

Me gustaría mostrar un diagrama de Bode de un convertidor reductor-elevador usando Matlab, así que obtuve la figura que se muestra a continuación. Si miramos más de cerca el diagrama de fase, vemos que comienza desde 360°. Mi deseo es hacer que el gráfico comience desde 0° en lugar de 360° para facilitarme la lectura.

  • ¿Qué debo hacer para que el gráfico de fase comience desde 0°?
  • Otra pregunta es ¿cómo puedo mostrar la ganancia en una frecuencia de cruce deseada en el gráfico?

    ingrese la descripción de la imagen aquí

¿Cuál fue el modelo de sistema dinámico que utilizó? ¿Utiliza la caja de herramientas del sistema de control y, de ser así, qué comando (bode, bodeplot) utilizó para trazar el diagrama de bode?
A veces uso el comando bode(sys,options) y otras usos margin(sys). En esta pantalla, he usado el comando margin(sys). Pero en ambos casos obtengo que el gráfico de fase comienza desde 360 ​​° en lugar de 0 °

Respuestas (1)

Una posible solución sería usar bodeplot y luego cambiar la propiedad PhaseMatchingValue. Como ejemplo, uso H ( s ) = s 4 + 1 s + 1 :

sys = tf([1 0 0 0 1],[1 1]);
h = bodeplot(sys);
p = getoptions(h);
p.PhaseMatching = 'on';
p.PhaseMatchingFreq = 1; 
p.PhaseMatchingValue = 0;
setoptions(h,p);

Esto da como resultado el siguiente diagrama de Bode

Diagrama de Bode con PhaseMatchingValue = 0

Otra solución (no muy elegante) usando el comando bode

sys = tf([1 0 0 0 1],[1 1]);
wout = logspace(-2,2,201);
[mag,phase,wout] = bode(sys,wout);
wout = squeeze(wout);
mag = squeeze(mag);
phase = squeeze(phase);
%adjusting the phase
phase = phase - 360;
subplot(2,1,1);
% plot amplitude response
semilogx(wout,20*log10(mag));
hold on;
%mark a point at wout(101)
semilogx(wout(101),20*log10(mag(101)),'xr');
text(wout(101),20*log10(mag(101)),'\omega = 1')
%plot phase response
subplot(2,1,2);
semilogx(wout,phase);

diagrama de bode usando bode