Today I am happy to welcome guest blogger Jacob Halbrooks to describe enhancements to the MATLAB Editor to help editing System Objects.
In R2016a, MATLAB Editor includes new tools to help you write System objects. These tools appear when you create a new System object or open an existing one. Here, we'll use these tools to help us write a simple moving average filter for use in MATLAB or Simulink.
Enhanced MATLAB Editor
We start by creating a new System object in MATLAB. From the MATLAB Home tab, select New and then choose System Object > Basic. A new document is created with template code for a basic System object. In addition, observe the new System Object section of the toolstrip:
This section includes tools to insert code, display a code outline (Analyze), and preview your System block dialog.
Let's change the name of the System object to "MovingAverageFilter", update the class comment, and save it. This gives us a good outline to start from:
A major feature of the MATLAB System block is that it creates a free dialog for you. In MATLAB Editor, you can now preview the block dialog before you even create a System block or open Simulink. Click the top of the System Block button, and you will see the dialog open:
You can keep this dialog open, and it will automatically update as you save changes to your System object.
Insert Properties and States
Our moving average filter should have a public property for the window length and a private property to hold a pre-computed constant, which is a value that is calculated once. In addition, the filter requires a discrete-state property. From the toolstrip, pull down the Insert Property menu. The menu lists the most common types of properties used in System objects as well as a custom option to let you define a property with your choice of attributes. Choose Numeric for the window length property:
A new section of code is inserted for this type of property, and the name of the property is selected so you can easily type to rename it:
Rename the property and give it a default value and comments:
Save the file and note how the dialog updates:
Similarly, add a private property from the Insert Property menu and name it "pCoefficients". The state can be added using the Insert State button on the toolstrip:
Remove extra space and the unused properties code block, and the System object now looks like:
Now let's define the behavior of the System object by implementing its methods:
While its algorithm has been implemented, we want an additional feature for our System object, which is to validate the input data. In order to discover a method to implement that feature, we can select the Insert Method button. This opens a gallery that lists the complete System object API:
The gallery shows which methods are already implemented and allows you to browse other methods and select one for insertion. The "Validate inputs" method from the "Inputs and Outputs" group sounds like what we want, so select that. The following code is inserted:
Now we implement the method and the System object is complete. The final version is:
The System object is now ready to use either in MATLAB or in Simulink using the MATLAB System block!
Now it's your turn
We hope this enhancement to the MATLAB Editor will make you life creating system objects easier. Give it a try and let us know what you think by leaving a comment here.
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.