ufrd

Uncertain frequency response data model

Syntax

ufrd_sys = ufrd(M,freqs)
ufrd_sys = ufrd(M,freqs,frequnits)
ufrd_sys = ufrd(M,freqs,frequnits,timeunits)

Description

Uncertain frequency response data models (ufrd) arise when combining numeric frd models with uncertain models such as ureal, ultidyn, umargin, or uss. A ufrd model keeps track of how the uncertain elements affect the frequency response. Use ufrd for robust stability and worst-case performance analysis.

There are three ways to construct a ufrd model:

1. Combine numeric frd models with uncertain models using model arithmetic. For example:

sys = frd(rand(100,1),logspace(-2,2,100));
k = ureal('k',1);
D = ultidyn('Delta',[1 1]);
ufrd_sys = k*sys*(1+0.1*D)

ufrd_sys is a ufrd model with uncertain elements k and D.

2. ufrd_sys = ufrd(M,freqs) converts the dynamic system model or static model M to ufrd. If M contains Control Design Blocks that do not represent uncertainty, these blocks are replaced by their current value. (To preserve both tunable and uncertain Control Design Blocks, use genfrd instead.)

Use ufrd_sys = ufrd(M,freqs,frequnits) to specify the frequency units of the frequencies in freqs. The argument frequnits can take the following values:

• 'cycles/TimeUnit'

• 'Hz'

• 'kHz'

• 'MHz'

• 'GHz'

• 'rpm'

Use ufrd_sys = ufrd(M,freqs,frequnits,timeunits) to specify the time unit of ufrd_sys when M is a static model. timeunits can take the following values:

• 'nanoseconds'

• 'microseconds'

• 'milliseconds'

• 'seconds'

• 'minutes'

• 'hours'

• 'days'

• 'weeks'

• 'months'

• 'years'

3. Use frd to construct a ufrd model from an uncertain matrix (umat) representing uncertain frequency response data. For example:

a = ureal('delta',1,'percent',50);
freq = logspace(-2,2,100);
RespData = rand(1,1,100) * a;
usys = frd(RespData,freq,0.1)

Examples

collapse all

Compute the uncertain frequency response of an uncertain system with both parametric uncertainty (ureal) and uncertain gain and phase (umargin). Create the uncertain frequency response by building a uss model using uncertain dynamics, and then extracting its response at a specified set of frequencies.

p1 = ureal('p1',5,'Range',[2 6]);
p2 = ureal('p2',3,'Plusminus',0.4);
F = umargin('F',1.2);
A = [-p1 0;p2 -p1];
B = [0;p2];
C = [1 1];
usys = uss(A,B,C,0)*F;

freqs = logspace(-2,2,60);
usysfrd = ufrd(usys,freqs);

Plot random samples and the nominal value of the uncertain frequency response.

rng(0);    % for reproducibility
bode(usysfrd,'r',usysfrd.NominalValue,'b+')  