Main Content

rfmodel.rational

Perform rational fit using pole-residue representation of the component

Description

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

F(s)=(k=1nCksAk+D)esτ,s=j2πf

There are two ways to construct an rational function object:

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

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

Creation

Description

example

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

h = rfmodel.rational('Property1',value1,'Property2',value2,...) sets properties using one or more name-value pairs. You can specify multiple name-value pairs. Enclose each property name in a quote

Properties

expand all

Poles of rational function object, specified as a complex vector in radians/second. The property length is shown in:

F(s)=(k=1nCksAk+D)esτ,s=j2πf

where, n must be equal to the length of the vector you provide for 'C'. n is the number of poles in the rational function object. By default, this property is empty.

Data Types: double

Residues of the rational function object, specified as a complex vector in radians/second. The property length is shown in

F(s)=(k=1nCksAk+D)esτ,s=j2πf

as n, must be equal to the length of the vector you provide for 'A'. n is the number of residues in the rational function object. By default, this property is empty.

Data Types: double

Frequency response offset, specified as a scalar. The default value is 0.

Data Types: double

Frequency response time delay, specified as a scalar. The default value is 0.

Data Types: double

Object name, specified as a 1-by-N character array. This is a read-only property.

Data Types: char

Object Functions

timerespTime response for rational objects
steprespStep-signal response for rational object and rationalfit function object
freqrespFrequency response of rational object and rationalfit function object
impulseImpulse response for rational function object
ispassiveReturn true if rational fit output is passive at all frequencies
makepassiveEnforce passivity of rational fit
passivityPlot passivity of N-by-N rational fit output
pwlresp Calculate time response of piecewise linear input signal
generateSPICEGenerate SPICE file from rationalfit of S-parameters
writevaGenerate Verilog-A description of rational object
abcdConstruct state-space matrices from rational object
zpkCompute zeros, poles, and gain of rational object

Examples

collapse all

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

S = sparameters('defaultbandpass.s2p');
freq = S.Frequencies;
data = rfparam(S,2,1);
fit = rational(freq,data)
fit = 
  rational with properties:

      NumPorts: 1
      NumPoles: 10
         Poles: [10x1 double]
      Residues: [1x1x10 double]
    DirectTerm: 0
         ErrDB: -172.2180

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.

rat=rfmodel.rational('A',[-5e9,-3e9,-4e6],'C',[6e8,2e9,4e9]);

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

f = [1e6:1.0e7:3e9];

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

[resp,freq]=freqresp(rat,f);   
figure
plot(freq/1e9,20*log10(abs(resp)));      
xlabel('Frequency (GHz)')
ylabel('Magnitude (dB)')

Read a file named passive.s2p and fit the 2-by-2 S-parameters. Generate a SPICE file of these S-parameters.

S = sparameters('passive.s2p');
fit = rational(S);
generateSPICE(fit,'passive.ckt')

The circuit is saved in your current folder.

Version History

Introduced in R2009a