DSP System Toolbox™ Getting Started Guide
DSP System Toolbox™ Getting Started Guide
R2014a
Web
Newsgroup
www.mathworks.com/contact_TS.html Technical Support
www.mathworks.com
comp.soft-sys.matlab
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
508-647-7000 (Phone)
508-647-7001 (Fax)
The MathWorks, Inc.
3 Apple Hill Drive
Natick, MA 01760-2098
For contact information about worldwide offices, see the MathWorks Web site.
DSP System Toolbox Getting Started Guide
COPYRIGHT 20112014 by The MathWorks, Inc.
The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathWorks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern
the use, modification, reproduction, release, performance, display, and disclosure of the Program and
Documentation by the federal government (or other entity acquiring for or through the federal government)
and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the
governments needs or is inconsistent in any respect with federal procurement law, the government agrees
to return the Program and Documentation, unused, to The MathWorks, Inc.
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Revision History
April 2011
September 2011
March 2012
September 2012
March 2013
September 2013
March 2014
First printing
Online only
Online only
Online only
Online only
Online only
Online only
Revised
Revised
Revised
Revised
Revised
Revised
Revised
for
for
for
for
for
for
for
Version
Version
Version
Version
Version
Version
Version
8.0
8.1
8.2
8.3
8.4
8.5
8.6
(R2011a)
(R2011b)
(R2012a)
(R2012b)
(R2013a)
(R2013b)
(R2014a)
Contents
Introduction
1
DSP System Toolbox Product Description . . . . . . . . . . .
Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1-2
1-2
1-3
1-3
1-3
1-4
1-5
1-5
1-6
2
Filter Design Process Overview . . . . . . . . . . . . . . . . . . . . .
2-2
2-4
..................
2-10
3
Design and Implement a Filter . . . . . . . . . . . . . . . . . . . . . .
3-2
3-2
3-7
Adaptive Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Design an Adaptive Filter in Simulink . . . . . . . . . . . . . . . .
Add an Adaptive Filter to Your Model . . . . . . . . . . . . . . . . .
View the Coefficients of Your Adaptive Filter . . . . . . . . . . .
3-11
3-11
3-16
3-21
System Objects
4
.........................
4-2
4-3
vi
Contents
4-5
4-5
4-5
4-6
4-8
4-9
4-10
4-10
4-16
4-16
4-16
4-16
4-17
4-17
4-17
4-18
4-18
4-18
4-19
4-21
4-21
4-22
4-23
4-25
4-25
4-28
4-28
4-34
4-35
vii
viii
Contents
1
Introduction
DSP System Toolbox Product Description on page 1-2
Configure Simulink Environment for Signal Processing Models on page
1-3
Configure the Simulink Environment for Signal Processing Models on
page 1-5
Introduction
Key Features
Algorithms available as MATLAB System objects and Simulink blocks
Simulation of streaming, frame-based, and multirate systems
Signal generators and I/O support for multimedia files and devices,
including ASIO drivers and multichannel audio
Design methods for specialized filters, including parametric equalizers and
adaptive, multirate, octave, and acoustic weighting filters
Filter realization architectures, including second-order sections and lattice
wave digital filters
Signal measurements for peak-to-peak, peak-to-RMS, state-level
estimation, and bilevel waveform metrics
FFT, spectral estimation, windowing, signal statistics, and linear algebra
Algorithm support for floating-point, integer, and fixed-point data types
Support for fixed-point modeling and C and HDL code generation
1-2
Installation
Before you begin working, you need to install the product on your computer.
Required Products
The DSP System Toolbox product is part of a family of MathWorks
products. You need to install several products to use the toolbox. For more
1-3
Introduction
information about the required products, see the MathWorks Web site, at
http://www.mathworks.com/products/dsp-system/requirements.html.
Related Products
MathWorks provides several products that are relevant to the kinds of tasks
you can perform with DSP System Toolbox software.
For more information about any of these products, see either
The online documentation for that product if it is installed on your system
The MathWorks Web site, at
http://www.mathworks.com/products/dsp-system/related.html.
1-4
Using dspstartup.m
The DSP System Toolbox product provides a file, dspstartup.m, that lets
you automatically configure the Simulink environment for signal processing
simulation. We recommend these configuration parameters for models that
contain DSP System Toolbox blocks. Because these blocks calculate values
directly rather than solving differential equations, you must configure the
Simulink solver to behave like a scheduler. The solver, while in scheduler
mode, uses a block sample time to determine when the code behind each block
executes. For example, if the sample time of a Sine Wave block is 0.05, the
solver executes the code behind this block and every other block with this
sample time once every 0.05 seconds.
Note When working with models that contain DSP System Toolbox blocks,
use source blocks that allow you to specify a sample time. When your source
block does not have a Sample time parameter, you must add a Zero-Order
Hold block in your model and use it to specify the sample time. For more
information, see Continuous-Time Source Blocks. The exception to this
rule is the Constant block, which can have a constant sample time. When it
does, Simulink executes this block and records the constant value once, which
allows for faster simulations and more compact generated code.
To use the dspstartup file to configure Simulink for signal processing
simulations, you can
Type dspstartup at the MATLAB command line. All new models have
settings customized for signal processing applications. Existing models
are not affected.
1-5
Introduction
You can edit the dspstartup file to change any of these settings or to add
your own custom settings. For complete information about these settings, see
Model Parameters in the Simulink documentation.
Settings in dspstartup.m
A number of the settings in the dspstartup file are chosen to improve the
performance of the simulation:
'Solver' is set to 'fixedstepdiscrete'.
This selects the fixed-step solver option instead of the Simulink default
variable-step solver. This mode enables code generation from the model
using the Simulink Coder product.
'Stop time' is set to 'Inf'.
The simulation runs until you manually stop it by selecting Stop from
the Simulation menu.
'SaveTime' is set to 'off'.
1-6
Simulink does not save the tout time-step vector to the workspace.
The time-step record is not usually needed for analyzing discrete-time
simulations, and disabling it saves a considerable amount of memory,
especially when the simulation runs for an extended time.
'SaveOutput' is set to 'off'.
Simulink Outport blocks in the top level of a model do not generate an
output (yout) in the workspace.
1-7
1-8
Introduction
2
Design a Filter with fdesign
and filterbuilder
Filter Design Process Overview on page 2-2
Design a Filter Using fdesign on page 2-4
Design a Filter Using filterbuilder on page 2-10
Implementation Object
High-level specification
Filter coefficients
Algorithmic properties
Filter structure
You can run the code in the following examples from the Help browser (select
the code, right-click the selection, and choose Evaluate Selection from the
context menu), or you can enter the code on the MATLAB command line.
Before you begin this example, start MATLAB and verify that you have
installed the Signal Processing Toolbox software. If you wish to access the
2-2
2-3
2-4
Step 1
To create a filter specification object, evaluate the following code at
the MATLAB prompt:
d = fdesign.bandpass
2-5
Step 2
Design the filter by using the design command. You can access the
design methods available for you specification object by calling the
designmethods function. For example, in this case, you can execute
the command
>> designmethods(BandPassSpecObj)
butter
cheby1
cheby2
ellip
equiripple
kaiserwin
After choosing a design method use, you can evaluate the following at the
MATLAB prompt (this example assumes youve chosen equiripple):
>> BandPassFilt = design(BandPassSpecObj, 'equiripple')
BandPassFilt =
FilterStructure:
Arithmetic:
Numerator:
PersistentMemory:
'Direct-Form FIR'
'double'
[1x44 double]
false
If you have the DSP System Toolbox installed, you can also design your
filter with a filter System object. To create a filter System object
with the same specification object BandPassSpecObj, you can execute
the commands
>> designmethods(BandPassSpecObj,...
'SystemObject',true)
2-6
butter
cheby1
cheby2
ellip
equiripple
kaiserwin
System: dsp.FIRFilter
Properties:
Structure:
NumeratorSource:
Numerator:
InitialConditions:
FrameBasedProcessing:
'Direct form'
'Property'
[1x44 double]
0
true
Available design methods and design options for filter System objects
are not necessarily the same as those for filter objects.
2-7
'Direct-Form FIR'
'double'
[1x44 double]
false
If you have the DSP System Toolbox installed, the Filter Visualization
tool produces the following figure with the dashed red lines indicating
the transition bands and unity gain (0 in dB) over the passband.
2-8
2-9
filterbuilder
2 Select Bandpass filter response from the list in the dialog box, and hit the
OK button.
3 Enter the correct frequencies for Fpass2 and Fstop2, then click OK. Here
If you display the Workspace tab, you see the object Hbp has been placed
on your workspace.
4 To check your work, plot the filter magnitude response using the Filter
Visualization tool. Verify that all the design parameters are met:
fvtool(Hbp) %plot the filter magnitude response
2-10
Note that the dashed red lines on the preceding figure will only appear if
you are using the DSP System Toolbox software.
2-11
2-12
3
Design Filters in Simulink
Design and Implement a Filter on page 3-2
Adaptive Filters on page 3-11
ex_gstut3
at the MATLAB command prompt. This model contains a Scope block that
displays the original sine wave and the sine wave with white noise added.
3-2
2 Open the DSP System Toolbox library by typing dsplib at the MATLAB
command prompt.
3 Convert white noise to low frequency noise by introducing a Digital Filter
Design block into your model. In the airplane scenario, the air passing over
the fuselage creates white noise that is measured by a sensor. The Random
Source block models this noise. The fuselage of the airplane converts this
white noise to low frequency noise, a type of colored noise, which is heard
inside the cockpit. This noise contains only certain frequencies and is more
difficult to eliminate. In this example, you model the low frequency noise
using a Digital Filter Design block. This block uses the functionality of the
Filter Design and Analysis Tool (FDATool) to design a filter.
3-3
4 Set the Digital Filter Design block parameters to design a lowpass filter
and create low frequency noise. Open the block parameters dialog box by
double-clicking the block. Set the parameters as follows:
Response Type = Lowpass
Design Method = FIR and, from the list, choose Window
Filter Order = Specify order and enter 31
Scale Passband Cleared
Window = Hamming
3-4
Units = Normalized (0 to 1)
wc = 0.5
Based on these parameters, the Digital Filter Design block designs a
lowpass FIR filter with 32 coefficients and a cutoff frequency of 0.5. The
block multiplies the time-domain response of your filter by a 32 sample
Hamming window.
5 Click Design Filter at the bottom center of the dialog box to view the
3-5
You have now designed a digital lowpass filter using the Digital Filter Design
block.
You can experiment with the Digital Filter Design block in order to design a
filter of your own. For more information on the block functionality, see the
Digital Filter Design block reference page. For more information on the Filter
Design and Analysis Tool, see FDATool in the Signal Processing Toolbox
documentation.
3-6
is not open on your desktop, you can open an equivalent model by typing
ex_gstut4
3-7
2 Incorporate the Digital Filter Design block into your block diagram by
placing it between the Random Source block and the Sum block.
3-8
3 Run your model and view the results in the Scope window. This window
shows the original input signal and the signal with low frequency noise
added to it.
3-9
You have now built a digital filter and used it to model the presence of colored
noise in your signal. This is analogous to modeling the low frequency noise
reaching the microphone in the cockpit of the aircraft. Now that you have
added noise to your system, you can experiment with methods to eliminate it.
3-10
Adaptive Filters
Adaptive Filters
In this section...
Design an Adaptive Filter in Simulink on page 3-11
Add an Adaptive Filter to Your Model on page 3-16
View the Coefficients of Your Adaptive Filter on page 3-21
is not open on your desktop, you can open an equivalent model by typing
ex_gstut5
3-11
2 Open the DSP System Toolbox library by typing dsplib at the MATLAB
command prompt.
3 Remove the low frequency noise from your signal by adding an LMS
3-12
Adaptive Filters
4 Set the LMS Filter block parameters to model the output of the Digital
Filter Design block. Open its dialog box by double-clicking the block. Set
the block parameters as follows:
Algorithm = Normalized LMS
3-13
Filter length = 32
Specify step size via = Dialog
Step size (mu) = 0.1
Leakage factor (0 to 1) = 1.0
Initial value of filter weights = 0
Clear the Adapt port check box.
Reset port = None
Select the Output filter weights check box.
The LMS Filter dialog box should now look like the following figure:
3-14
Adaptive Filters
3-15
5 Click Apply.
Based on these parameters, the LMS Filter block computes the filter weights
using the normalized LMS equations. The filter order you specified is the
same as the filter order of the Digital Filter Design block. The Step size (mu)
parameter defines the granularity of the filter update steps. Because you set
the Leakage factor (0 to 1) parameter to 1.0, the current filter coefficient
values depend on the filters initial conditions and all of the previous input
values. The initial value of the filter weights (coefficients) is zero. Since you
selected the Output filter weights check box, the Wts port appears on the
block. The block outputs the filter weights from this port.
Now that you have set the block parameters of the LMS Filter block, you can
incorporate this block into your block diagram.
page 3-11 is not open on your desktop, you can open an equivalent model
by typing
ex_gstut6
3-16
Adaptive Filters
2 Add a Sum block to your model to subtract the output of the adaptive filter
from the sinusoidal signal with low frequency noise. From the Simulink
Math Operations library, drag a Sum block into your model. Open the
Sum dialog box by double-clicking this block. Change the List of signs
parameter to |+- and then click OK.
3 Incorporate the LMS Filter block into your system.
a Connect the output of the Random Source block to the Input port of the
LMS Filter block. In the aircraft scenario, the random noise is the white
noise measured by the sensor on the outside of the airplane. The LMS
Filter block models the effect of the airplanes fuselage on the noise.
b
Connect the output of the Digital Filter Design block to the Desired port
on the LMS Filter block. This is the signal you want the LMS block to
reproduce.
3-17
c Connect the output of the LMS Filter block to the negative port of the
second Sum block. Your model should now look similar to the following
figure.
The positive input to the second Sum block is the sum of the input signal
and the low frequency noise, s(n) + y. The negative input to the second Sum
block is the LMS Filter blocks best estimation of the low frequency noise,
3-18
Adaptive Filters
y. When you subtract the two signals, you are left with an approximation
of the input signal.
axes and select Axes properties. The Scope properties: axis 3 dialog box
opens. In the Title box, enter Approximation of Input Signal. Close
the dialog box by clicking OK. Repeat this procedure for the fourth axes
and label it Error.
6 Connect the output of the second Sum block to the third port of the Scope
block.
7 Connect the output of the Error port on the LMS Filter block to the fourth
port of the Scope block. Your model should now look similar to the following
figure.
3-19
In this example, the output of the Error port is the difference between the
LMS filters desired signal and its output signal. Because the error is never
zero, the filter continues to modify the filter coefficients in order to better
approximate the low frequency noise. The better the approximation, the more
low frequency noise that can be removed from the sinusoidal signal. In the
next topic, View the Coefficients of Your Adaptive Filter on page 3-21, you
learn how to view the coefficients of your adaptive filter as they change with
time.
3-20
Adaptive Filters
page 3-16 is not open on your desktop, you can open an equivalent model
by typing
ex_gstut7
at the MATLAB command prompt. Note that the Wts port of the adaptive
filter, which outputs the filter weights, still needs to be connected.
3-21
2 Open the DSP System Toolbox library by typing dsplib at the MATLAB
command prompt.
3 View the filter coefficients using a Vector Scope block from the Sinks
library.
4 Open the Vector Scope dialog box by double-clicking the block. Set the
3-22
Adaptive Filters
Line visibilities = on
Line style = :
Line markers =.
Line colors = [0 0 1]
e Click OK.
5 Connect the Wts port of the LMS Filter block to the Vector Scope block.
3-23
3-24
Adaptive Filters
3-25
You can simultaneously view the behavior of the system in the Scope
window. Over time, you see the error decrease and the approximation of
the input signal more closely match the original sinusoidal input signal.
3-26
Adaptive Filters
You have now created a model capable of adaptive noise cancellation. So far,
you have learned how to design a lowpass filter using the Digital Filter Design
block. You also learned how to create an adaptive filter using the LMS Filter
block. The DSP System Toolbox product has other blocks capable of designing
and implementing digital and adaptive filters. For more information on the
filtering capabilities of this product, see Filter Design and Filter Analysis.
Because all blocks in this model have the same sample time, this model is
single rate and Simulink ran it in SingleTasking solver mode. If the blocks
in your model have different sample times, your model is multirate and
Simulink might run it in MultiTasking solver mode. For more information on
solver modes, see Recommended Settings for Discrete-Time Simulations in
the DSP System Toolbox Users Guide.
To learn how to generate code from your model using the Simulink Coder
product, see the Generate Code from Simulink section.
3-27
3-28
4
System Objects
What Is a System Toolbox? on page 4-2
What Are System Objects? on page 4-3
When to Use System Objects Instead of MATLAB Functions on page 4-5
System Design and Simulation in MATLAB on page 4-8
System Design and Simulation in Simulink on page 4-9
System Objects in MATLAB Code Generation on page 4-10
System Objects in Simulink on page 4-17
System Object Methods on page 4-18
System Design in MATLAB Using System Objects on page 4-21
System Design in Simulink Using System Objects on page 4-28
System Objects
4-2
4-3
System Objects
4-4
4-5
System Objects
Obtain the total number of samples and the sampling rate from the source file.
audioInfo = audioinfo(fname);
maxSamples = audioInfo.TotalSamples;
fs = audioInfo.SampleRate;
Define the amount of audio data to process at one time, and initialize the
while loop index.
frameSize = 1024;
nIdx = 1;
The loop uses explicit indexing and state management, which can be a tedious
and error-prone approach. You must have detailed knowledge of the states,
such as, sizes and data types. Another issue with this MATLAB-only code is
that the sound function is not designed to run in real time. The resulting
audio is very choppy and barely audible.
4-6
The code uses System objects from the DSP System Toolbox software to read
audio data from a file, filter it, and then play the filtered audio data. This code
produces the same result as the MATLAB code shown previously, allowing
you to compare approaches.
Locate source audio file.
fname = 'speech_dft_8kHz.wav';
This System objects code avoids the issues present in the MATLAB-only code.
Without requiring explicit indexing, the file reader object manages the data
frame sizes while the filter manages the states. The audio player object plays
each audio frame as it is processed.
4-7
System Objects
your system. See Create Components for Your System on page 4-21
for information. In addition to the System objects provided with System
Toolboxes, you can also create your own System objects. See Define New
System Objects.
2 Configure components If necessary, change the objects property values
to model your particular system. All System object properties have default
values that you may be able to use without changing them. See Configure
Components for Your System on page 4-22 for information.
3 Assemble components into system Write a MATLAB program that
run your systems System objects. You can change tunable properties
while your system is running. See Run Your System on page 4-25 and
Reconfigure Your System During Runtime on page 4-25 for information.
4-8
Add System Objects to Your Simulink Model on page 4-35 for information.
4 Add other Simulink blocks as needed and connect the blocks to construct
your system.
5 Run the system
4-9
System Objects
4-10
% Filter weights
end
This example shows how to compile the lmssystem function and produce a
MEX file with the same name in the current directory.
% LMSSYSTEMIDENTIFICATION System identification using
% LMS adaptive filter
coefs = fir1(10,.25);
hfilt = dsp.FIRFilter('Numerator', coefs);
x = randn(1000,1);
hSrc = dsp.SignalSource(x,100);
% Input signal
% Use x as input-signal with
% 100 samples per frame
4-11
System Objects
For another detailed code generation example, see Generate Code for
MATLAB Handle Classes and System Objects in the MATLAB Coder product
documentation.
function RunDCTExample
% Execute everything needed at the command line to run the example
warnState = warning('off','SimulinkFixedPoint:util:fxpParameterUnderflow
4-12
4-13
System Objects
If you want the size of inputs to change, verify that variable-size is enabled.
Code generation support for variable-size data also requires that the Enable
variable sizing option is enabled, which is the default in MATLAB.
Note Variable-size properties in MATLAB Function block in
Simulink are not supported. System objects predefined in the
software do not support variable-size if their data exceeds the
DynamicMemoryAllocationThreshold value.
Do not set System objects to become outputs from the MATLAB Function
block.
Do not use the Save and Restore Simulation State as SimState option for
any System object in a MATLAB Function block.
Do not pass a System object as an example input argument to a function
being compiled with codegen.
Do not pass a System object to functions declared as extrinsic (functions
called in interpreted mode) using the coder.extrinsic function. System
objects returned from extrinsic functions and scope System objects that
automatically become extrinsic can be used as inputs to another extrinsic
function, but do not generate code.
Tunable and Nontunable Properties
The value assigned to a nontunable property must be a constant and there
can be at most one assignment to that property (including the assignment
in the constructor).
For most System objects, the only time you can set their nontunable
properties during code generation is when you construct the objects.
4-14
For System objects that are predefined in the software, you can set their
tunable properties at construction time or using dot notation after the
object is locked.
For System objects that you define, you can change their tunable
properties at construction time or using dot notation during code
generation.
get
getNumInputs
getNumOutputs
isDone (for sources only)
release
reset
set (for tunable properties)
step
Code generation support for using dot notation depends on whether the
System object is predefined in the software or is one that you defined.
For System objects that are predefined in the software, you cannot use
dot notation to call methods.
4-15
System Objects
For System objects that you define, you can use dot notation or function
call notation, with the System object as first argument, to call methods.
4-16
4-17
System Objects
4-18
For more information about the step method and other available methods, see
the descriptions in Common Methods on page 4-19.
Common Methods
All System objects support the following methods, each of which is described
in a method reference page associated with the particular object. In cases
where a method is not applicable to a particular object, calling that method
has no effect on the object.
Method
Description
step
release
reset
getNumInputs
getNumOutputs
4-19
4-20
System Objects
Method
Description
getDiscreteState
clone
isLocked
isDone
info
4-21
System Objects
Next, you configure each System object for your system. See Configure
Components for Your System on page 4-22. Alternately, if desired, you can
Create and Configure Components at the Same Time on page 4-23.
4-22
For the filter object, specify the filter numerator coefficients using the fir1
function, which specifies the lowpass filter order and the cutoff frequency.
filtLP.Numerator = fir1(160,.15);
For the audio player object, specify the sample rate. In this case, use the
same sample rate as the input data.
audioOut.SampleRate = audioIn.SampleRate;
Create the filter object and specify the filter numerator using the fir1
function. Specify the lowpass filter order and the cutoff frequency of the fir1
function.
filtLP = dsp.FIRFilter('Numerator',fir1(160,.15));
Create the audio player object and specify the sample rate. In this case, use
the same sample rate as the input data.
audioOut = dsp.AudioPlayer('SampleRate',audioIn.SampleRate);
After you create the components, you can assemble them in your system. See
Assemble Components to Create Your System on page 4-23.
4-23
System Objects
4-24
The while loop uses the isDone method to read through the entire file. The
step method is used on each object inside the loop.
Now, you are ready to run your system. See Run Your System on page 4-25.
4-25
System Objects
4-26
You can change the value of a tunable property without a warning or error
being produced. For all other changes at run time, an error occurs.
4-27
System Objects
4-28
2 On the first line of the class definition file, specify the name of
number of inputs and outputs, and run your algorithm. See the reference
pages for each method and the full class definition file below for the
implementation of each of these methods.
Use the setupImpl method to perform one-time calculations and initialize
variables.
Use the stepImpl method to implement the blocks algorithm.
Use the resetImpl to reset the state properties or DiscreteState
properties.
Use the getNumInputsImpl and getNumOutputsImpl methods to specify
the number of inputs and outputs, respectively.
4 Add the appropriate CustomIcon methods to define the appearance of the
MATLAB System block in Simulink. See the reference pages for each method
and the full class definition file below for the implementation of each of these
methods.
Use the getHeaderImpl method to specify the title and description to
display on the block dialog.
Use the getPropertyGroupsImpl method to specify groups of properties to
display on the block dialog.
Use the getIconImpl method to specify the text to display on the block icon.
Use the getInputNamesImpl and getOutputNamesImpl methods to specify
the labels to display for the block input and output ports.
The full class definition file for the least mean squares filter is:
classdef lmsSysObj < matlab.System &...
matlab.system.mixin.CustomIcon
4-29
System Objects
4-30
4-31
System Objects
out2name = 'EstError';
end
end
end
methods and specify the block input and output names, title, and property
groups. The CustomIcon mixin class enables the method that lets you specify
the block icon. The Nondirect mixin enables the methods that let you specify
how the block is updated and what it outputs.
3 Add the appropriate basic System object methods to set up and reset the
object and set and validate the properties. Since this object supports nondirect
feedthrough, you do not implement the stepImpl method. You implement the
updateImpl and outputImpl methods instead. See the reference pages for
each method and the full class definition file below for the implementation of
each of these methods.
Use the setupImpl method to initialize some of the objects properties.
Use the resetImpl to reset the property states.
Use the validatePropertiesImpl to check that the property values are
valid.
4 Add the following Nondirect mixin class methods instead of the stepImpl
method to specify how the block updates its state and its output. See the
reference pages and the full class definition file below for the implementation
of each of these methods.
Use the outputImpl method to implement code to calculate the block
output.
4-32
Simulink via the MATLAB System block. See the reference page and the full
class definition file below for the implementation of this method.
The full class definition file for the delay is:
classdef intDelaySysObj < matlab.System &...
matlab.system.mixin.Nondirect &...
matlab.system.mixin.CustomIcon
%intDelaySysObj Delay input by specified number of samples.
%#codegen
properties
%InitialOutput Initial output
InitialOutput = 0;
end
properties (Nontunable)
% NumDelays Number of delays
NumDelays = 1;
end
properties(DiscreteState)
PreviousInput;
end
methods(Access=protected)
function setupImpl(obj, ~)
obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput;
end
function [y] = outputImpl(obj, ~)
% Output does not directly depend on input
y = obj.PreviousInput(end);
end
4-33
System Objects
function updateImpl(obj, u)
obj.PreviousInput = [u obj.PreviousInput(1:end-1)];
end
function flag = isInputDirectFeedthroughImpl(~,~)
flag = false;
end
function validatePropertiesImpl(obj)
if ((numel(obj.NumDelays)>1) || (obj.NumDelays <= 0))
error('Number of delays must be positive non-zero scalar value.
end
if (numel(obj.InitialOutput)>1)
error('Initial output must be scalar value.');
end
end
function resetImpl(obj)
obj.PreviousInput = ones(1,obj.NumDelays)*obj.InitialOutput;
end
function icon = getIconImpl(~)
icon = sprintf('Integer\nDelay');
end
end
end
tests for syntax errors and other possible issues before you add it to Simulink.
For example,
desired = 0;
actual = 0.2;
4-34
step(s,desired,actual);
4-35