%%%%%%%%%%%%%%%%%%%%%%% %%% Programme pdf.m %%% %%%%%%%%%%%%%%%%%%%%%%% clear all; close all; % Définition du système à corriger s=tf('s'); P=input('Fonction de transfert du système à corriger?') % Définition de la pulsation de coupure et de la marge de phase souhaitées wd=input('Pulsation de coupure souhaitée pour le système corrigé?') Mp=input('Marge de phase souhaitée (en radians)?') % Caractéristiques du PDF à appliquer [gain_P_wd,phase_P_wd]=bode(P,wd); phase_P_wd=phase_P_wd/180*pi; gain_K_PDF=1/gain_P_wd; phase_K_PDF=-pi+Mp-phase_P_wd; % Calcul du régulateur PDF K_PDF=calcul_pdf(gain_K_PDF,phase_K_PDF,wd); % Diagrammes de Bode L=P*K_PDF; figure; bode(L,K_PDF,'-.',P,'--'); grid % NOTA BENE: selon le système considéré, il arrive que Matlab donne comme % résultat de la ligne % [gain_P_wd,phase_P_wd]=bode(P,wd) % une phase phase_P_wd en lui ajoutant 360°, ce qui est correct mais qui % résulte en une phase phase_K_PDF=-pi+Mp-phase_P_wd négative et conduit % à un résultat faux. Dans un tel cas, l'utilisateur aura soin d'ajouter % la ligne de commande % phase_P_wd = phase_P_wd-2*pi % immédiatement après la ligne 14 de ce programme.