How to calculate the poles of the fractional transfer function
33 次查看(过去 30 天)
显示 更早的评论
This is my fractional transfer fucnction, I want to draw the poles of the transfer function. I tried to use the FOMCON toolbox, but there is no pzmap function.How should I do?
---------
clear;clc;
s=fotf('s');
lamda1=0.8;
lamda2=0.8;
w0=300;
alpha1=2*w0;
alpha2=w0^2;
beta1=2*w0;
beta2=w0^2;
k=60;
r=1;
h1=s^(lamda1+1)+alpha1*s^(lamda1)+alpha2;
h2=s^(lamda2+1)+beta1*s^(lamda2)+beta2;
m1=h1*h2-h2*alpha2-h1*beta2+beta2*(s^(lamda1+1)+alpha2);
m2=h1*h2*k+alpha2*h2*s+alpha1*beta2*s^(lamda1+1);
G=k*h1*h2/(r*m1*s+m2);
------
where G is the transfer function.
1 个评论
Umar
2024-7-31
Hi @ Sicong Wen,
Addressing your query, please use the function, I saved it as “tran.m” and code below, I did use function “pzmap“ without using toolbox and it did plot results,at the moment I can’t upload the plot results since daily upload is limited to 10 plots. Hope, you understand.
%function
% Define the fotf function to create a fractional order transfer function function F = fotf(s) F = s;
%script code
>> % Define the transfer function 's' with generic data
s = tf('s');
lambda1 = 1;
lambda2 = 1;
w0 = 300;
alpha1 = 2 * w0;
alpha2 = w0^2;
beta1 = 2 * w0;
beta2 = w0^2;
k = 60;
r = 1;
% Define the transfer function components
h1 = s^(lambda1 + 1) + alpha1 * s^lambda1 + alpha2;
h2 = s^(lambda2 + 1) + beta1 * s^lambda2 + beta2;
m1 = h1 * h2 - h2 * alpha2 - h1 * beta2 + beta2 * (s^(lambda1 + 1) + alpha2);
m2 = h1 * h2 * k + alpha2 * h2 * s + alpha1 * beta2 * s^lambda1;
% Calculate the transfer function G
G = k * h1 * h2 / (r * m1 * s + m2);
% Draw the poles of the transfer function
figure;
pzmap(G);
title('Poles of the Transfer Function');
For more guidance on pzmap function, please refer to
https://www.mathworks.com/help/control/ref/lti.pzmap.html
Please let me know if you have any further questions.
回答(1 个)
Sandeep Mishra
2024-8-9,9:35
Hi Sicong Wen,
To plot the poles and zeros of a fractional transfer function, you can use ‘pzmap’ function in MATLAB. It takes continuous or discrete-time dynamic system model as input.
To plot the data, you need to convert the fractional-order transfer function to state-space model and use ‘pzmap’ function. This can be done by using the following code-snippet in MATLAB:
% Convert a commensurate-order fractional-order transfer function to state-space form
[A,B,C,D,q] = tf2ss(G);
% Creating a state-space model object
state_space_model = ss(A, B, C, D)
% Plotting poles and zeroes using pzmap
pzmap(state_space_model)
Please refer to the below documentations for more information.
- 'tf2ss' function (FOMCOM Toolbox): https://www.mathworks.com/matlabcentral/fileexchange/66323-fomcon-toolbox-for-matlab
- 'pzmap' (Pole-zero plot of dynamic system): https://www.mathworks.com/help/control/ref/lti.pzmap.html
- 'ss' (State-space model): https://www.mathworks.com/help/control/ref/ss.html
I hope this helps.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Stability Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!