Finding the reactive components of a transfer function using continued fraction expansion for a polynomial (denominator of said transfer function)
7 views (last 30 days)
Show older comments
Hello!
I am currently trying to find the reactive elements of a singly terminated ladder low pass filter from a transfer function. Almost all of the papers I have read on this topic suggest using continued fraction expansion. Ive ran into a lot of issues implementing this expansion into a matlab code. Has anyone worked with this before? I feel like I must be missing some function that could really simplify what im trying to do.
To provide more information, I want to create a code that will take a Nth order polynomial (the denominator of my transfer function) and extract N reactive components. To do this, you follow the folling steps. D(s) is the denominator of our transfer function.



(Example from 2006 The McGraw-Hill Companies)
Where Y = sC and Z = sL (The coefficients of what s is multipled by will be the C and L, so we are solving to extract these coefficients)
So I want to do this expansion, and extract the Ys and Zs. If anyone would like, I can link the pdf where this example came from.
Thank you everyone!
Answers (1)
Soumya
on 8 Aug 2025
I understand that you are implementing the ‘Continued Fraction Expansion (CFE)’ in MATLAB. This can be performed using functions from MATLAB’s Symbolic Math Toolbox. The ‘quorem’ function computes the quotient and remainder during polynomial division, and these are used iteratively to construct each stage of the continued fraction.
The following steps give an intuition on how you can perform it:
- Initialize the variables. Here, ‘cfe’ is an empty cell array to store the quotients, which correspond to the ladder component:
a = den;
b = num;
cfe = {};
- Then, perform polynomial long division using the ‘quorem’ function, which returns both the quotient and the remainder:
while true
[q, r] = quorem(a, b, s); % Perform polynomial long division
cfe{end+1} = q; % Store the quotient
if r == 0 % Stop if no remainder
break;
end
% Swap for next iteration
a = b;
b = r;
end
disp('Ladder Network Components (Cauer CFE):');
for i = 1:length(cfe)
fprintf('Step %d: %s\n', i, char(cfe{i}));
end
Finally, you can display the continued fraction expansion using ‘disp’, validate the results against theoretical expectations, and extract the relevant components, as needed.
Please refer to the following resources for more information on the given topic:
- ‘quorem’ : https://www.mathworks.com/help/symbolic/quorem.html
- MATLAB’s Symbolic Math Toolbox: https://www.mathworks.com/help/symbolic/index.html
- Another related MATLAB Answer: https://fr.mathworks.com/matlabcentral/answers/2157110-caucer-fraction-expansion-fraction-expansion-for-filter-synthesis
I hope this helps!
0 Comments
See Also
Categories
Find more on Number Theory in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!