rfmodel.rational class

Package: rfmodel

Rational function object


h = rfmodel.rational
h = rfmodel.rational('Property1',value1,'Property2',value2,...)


Use the rational class to represent RF components using a rational function object of the form


There are two ways to construct an rational function object:

  • You can fit a rational function object to the component data using the rationalfit function.

  • You can use the rfmodel.rational constructor to specify the pole-residue representation of the component directly.

h = rfmodel.rational returns a rational function object whose properties are set to their default values.

h = rfmodel.rational('Property1',value1,'Property2',value2,...) returns a rational function object, h, with the specified properties. Properties that you do not specify retain their default values.


APoles of rational function object
CResidues of rational function object
DFrequency response offset
DelayFrequency response time delay
NameObject name


freqrespFrequency response of rational function object
ispassiveCheck passivity of scalar rational function object
steprespStep-signal response of rational function object
timerespTime response for rational function object
writevaWrite Verilog-A description of rational function object


Fit a Rational Function to Data

Fit a rational function to data from an rfdata.data object:

Warning: The least error fit only meets tolerance -32.77 dB, using 48 poles. 

fit_data = 

   rfmodel.rational with properties:

        A: [48x1 double]
        C: [48x1 double]
        D: 0
    Delay: 0
     Name: 'Rational Function'

Define, Evaluate and Visualize a Rational Function

  • Construct a rational function object, rat, with poles at -4 Mrad/s, -3 Grad/s, and -5 Grad/s and residues of 600 Mrad/s, 2 Grad/s and 4 Grad/s.

  • Perform frequency-domain analysis from 1.0 MHz to 3.0 GHz.

  • Plot the resulting frequency response in decibels on the X-Y plane.

      'C',[6e8,2e9,4e9]);      % Create model
f = [1e6:1.0e7:3e9];
[resp,freq]=freqresp(rat,f);   % Compute frequency response
 plot(freq/1e9,db(resp));      % Plot frequency response
 xlabel('Frequency (GHz)')
 ylabel('Magnitude (dB)')

Was this topic helpful?