Please note that the recommended version of Scilab is 2024.0.0. This page might be outdated.

See the recommended documentation of this function

# repfreq

frequency response

### Syntax

repf = repfreq(sys) repf = repfreq(sys, frq) repf = repfreq(sys, fmin, fmax) repf = repfreq(sys, fmin, fmax, step) [frq, repf] = repfreq(..) [frq, repf, splitf] = repfreq(..)

### Arguments

- sys
A siso or simo linear dynamical system, in state space, transfer function or zpk representations, in continuous or discrete time.

- fmin,fmax
two real numbers (lower and upper frequency bounds)

- frq
real vector of frequencies (Hz)

- step
logarithmic discretization step

- splitf
vector of indexes of critical frequencies.

- repf
vector of the complex frequency response

### Description

`repfreq`

returns the frequency response calculation of a linear
system. If `sys(s)`

is the transfer function of `Sys`

, `repf(k)`

equals `sys(s)`

evaluated at `s= %i*frq(k)*2*%pi`

for continuous time systems and
at `exp(2*%i*%pi*dt*frq(k))`

for discrete time systems (`dt`

is the sampling period).

`db(k)`

is the magnitude of `repf(k)`

expressed in dB i.e.
`db(k)=20*log10(abs(repf(k)))`

and `phi(k)`

is the phase
of `repf(k)`

expressed in degrees.

If `fmin,fmax,step`

are input parameters, the response is calculated
for the vector of frequencies `frq`

given by:
`frq=[10.^((log10(fmin)):step:(log10(fmax))) fmax];`

If `step`

is not given, the output parameter `frq`

is calculated by `frq=calfrq(sys,fmin,fmax)`

.

Vector `frq`

is split into regular parts with the `split`

vector.
`frq(splitf(k):splitf(k+1)-1)`

has no critical frequency.
`sys`

has a pole in the range `[frq(splitf(k)),frq(splitf(k)+1)]`

and
no poles outside.

### Examples

A=diag([-1,-2]);B=[1;1];C=[1,1]; Sys=syslin('c',A,B,C); frq=0:0.02:5;w=frq*2*%pi; //frq=frequencies in Hz ;w=frequencies in rad/sec; [frq1,rep] =repfreq(Sys,frq); [db,phi]=dbphi(rep); Systf=ss2tf(Sys) //Transfer function of Sys x=horner(Systf,w(2)*sqrt(-1)) // x is Systf(s) evaluated at s = i w(2) rep=20*log(abs(x))/log(10) //magnitude of x in dB db(2) // same as rep ang=atan(imag(x),real(x)); //in rad. ang=ang*180/%pi //in degrees phi(2) repf=repfreq(Sys,frq); repf(2)-x

### See also

### History

Version | Description |

6.0 | handling zpk representation |

Report an issue | ||

<< phaseplot | Frequency Domain | svplot >> |