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)
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
Soumya on 8 Aug 2025
Hi @ Jason,
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:
I hope this helps!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!