How can I do summation in transfer function?
22 次查看(过去 30 天)
显示 更早的评论
s = tf('s');
sys_Foster = tf(R_Foster(1)/(1+R_Foster(1)*C_Foster(1)*s)+R_Foster(2)/(1+R_Foster(2)*C_Foster(2)*s)+R_Foster(3)/(1+R_Foster(3)*C_Foster(3)*s));
[N_tf,D_tf] = tfdata(sys_Foster);
If I have a transfer function like the code show
How can I perform sys_Foster not only summation for 3 terms but i terms, where i is size(R_Foster)
I have tried the code below
for i = 1:size(R_Foster)
sys_Foster_i(i) = tf(R_Foster(i)/(1+R_Foster(i)*C_Foster(i)*s))
end
sys_Foster = sum(sys_Foster_i)
but got wrong answer.
0 个评论
采纳的回答
Paul
2022-3-25
One approach
R_Foster = 1:3;
C_Foster = 11:13;
sys_Foster = tf(0)
for ii = 1:3
sys_Foster = sys_Foster + tf(R_Foster(ii),[R_Foster(ii)*C_Foster(ii) 1])
end
sys_Foster
6 个评论
Paul
2022-3-25
Now I'm very confused as to what the goal actually is. In this answer I showed how to use a loop to add three first order transfer functions together using the Control System Toolbox functions. In this comment I showed how to create the same tf object but adding together the first order transfer functions using the Symbolic Toolbox to get the same result. Maybe you want to use the Symbolic Toolbox but in a loop?
R_Foster = sym(1:3);
C_Foster = sym(11:13);
syms s
H(s) = sym(0);
for ii = 1:numel(R_Foster)
H(s) = H(s) + R_Foster(ii)/(1+R_Foster(ii)*C_Foster(ii)*s);
end
H(s) % this is a symfun object
[num,den] = numden(H(s));
H(s) = num/den % still a symfun object
H(s) = expand(num)/expand(den) % still a symfun object
If none of this solves the problem, please be more clear about the problem actually is. Do you want a Symbolic result or a Control System Toolbox result? Does the result need to be in a specific format? Etc.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!