Comment tracer réponse en fréquence pour une fonction de transfert d'un filtre passe-bande dans Matlab?
je veux écrire un script permettant de tracer un graphique de la fonction de transfert H(f)] pour un filtre passe-bande, |H(f)| à l'encontre de la fréquence et de la phase de H(f) (degrés) à l'encontre de la fréquence, je suis très nouveau à matlab, donc la syntaxe n'est pas à 100%, je suis confondu parce que tout est automatique formaté sous forme de matrice.
ci-dessous mon script:
% RCL circuit: band-pass filter
R=55590; L=0.9571; C=48.811*10.^(-9); % values of the Resistor and Capacitor
f=(0:60e3); w=2*pi*f; % frequency (f) range of measurements
H=(R./(sqrt(R^2+(w*L-(1./(w*C))).^2))); % Transfer Function
% Magnitude (absolute value) of the transfer function
plot(f,abs(H),'LineWidth',2); grid on; hold on
xlabel('Frequency [Hz]','FontSize',20); ylabel('|H(f)|','FontSize',20)
figure
plot(f,angle(H)*180/pi,'LineWidth',2); grid on; hold on
xlabel('Frequency [Hz]','FontSize',18);
ylabel('phase of H(f) [degrees]','FontSize',20)
c'est la fonction de transfert de formule im en utilisant
ci-dessous une autre photo de ce que mes résultats expérimentaux étaient attendus graphique, je ne comprends pas pourquoi MATLAB n'est pas ploting ce que je veux?
- Afin de vous calculer H et de tracer sa valeur absolue par rapport à la fréquence. Quelle est la question?
- ma question est: pourquoi n'est-il pas le faire?
Vous devez vous connecter pour publier un commentaire.
Êtes-vous conscient de la
bodeplot
fonction?La fonction de transfert pour un simple passe-bande du second ordre est:
Il vous suffit d'insérer vos valeurs dans Matlab
tf
fonction et tracer avecbodeplot
:et c'parcelles:
Alternativement, si vous avez besoin de plus de sorties comme l'amplitude et la phase de variables, l'utilisation
bode
, l'intrigue est égal. Maisbodeplot
offre plus de terrain supplémentaire d'options de personnalisation.Ce qui concerne votre commentaire, que vous avez besoin d'un axe linéaire:
vous suffit d'ajouter les lignes suivantes avant la commande plot:
de sorte qu'il semble comme suit:
Pour le réglage de l'axe des fréquences limites, utilisation:
ou analogique de l'ampleur:
Je vous conseille contre un linéaire de la fréquence de l'axe, mais si vous le voulez VRAIMENT, vous pouvez utiliser:
Si vous voulez tracer vos données expérimentales avec le graphique ci-dessus, suivez cet exemple.
Utilisation
bode
d'obtenir également des données formatées à partir de votre fonction de transfert, à l'instar de vos données expérimentales et l'utilisationsemilogx
à tracer.freqVec
est une loi logarithmique espacés vectoriel engendré par logspace. Il est utilisé pour la fréquence comme un exemple.mag
etphs
sont les vecteurs de données pour l'amplitude et la phase, généré par le tracé de bode de la fonction basée surfreqVec
. Ces 3 variables décrivent la réponse en fréquence de votre fonction de transfertsys
. Le côlon opérateur(:)
fait juste une colonne de vecteur. Vos données expérimentales devraient également avoir des valeurs pour la fréquence, l'amplitude et la phase. Vous la tracez ensemble avecsemilogx
en utilisanthold on
pour garder la parcelle avant.semilogx
à l'intrigue, c'est l'idée. 😉 Sinon utiliserplot
. Mais sérieusement, une fréquence linéaire de l'axe est de la connerie...bodeoptions
pour définirP.FreqScale = 'linear'
et utiliser la normaleplot
de fonctionner dans tous les autres cas.P.XLim = [lowerBound upperBound]
?