This example shows how to write code to initialize and set up a System object™.
In this example, you allocate file resources by opening the file so the System object can write to that file. You do these initialization tasks one time during setup, rather than every time you call the step method.
|On this page…|
Define Public Properties to Initialize
In this example, you define the public Filename property and specify the value of that property as the nontunable string, default.bin. Users cannot change nontunable properties after the setup method has been called. Refer to the Methods Timing section for more information.
properties (Nontunable) Filename ='default.bin' end
Define Private Properties to Initialize
Users cannot access private properties directly, but only through methods of the System object. In this example, you define the pFileID property as a private property. You also define this property as hidden to indicate it is an internal property that never displays to the user.
properties (Hidden,Access=private) pFileID; end
You use the setupImpl method to perform setup and initialization tasks. You should include code in the setupImpl method that you want to execute one time only. The setupImpl method is called once during the first call to the step method. In this example, you allocate file resources by opening the file for writing binary data.
methods function setupImpl(obj,data) obj.pFileID = fopen(obj.Filename,'wb'); if obj.pFileID < 0 error('Opening the file failed'); end end end
Although not part of setup, you should close files when your code is done using them. You use the releaseImpl method to release resources.
Complete Class Definition File with Initialization and Setup
classdef MyFile < matlab.System %MyFile write numbers to a file % These properties are nontunable. They cannot be changed % after the setup or step method has been called. properties (Nontunable) Filename ='default.bin' % the name of the file to create end % These properties are private. Customers can only access % these properties through methods on this object properties (Hidden,Access=private) pFileID; % The identifier of the file to open end methods (Access=protected) % In setup allocate any resources, which in this case % means opening the file. function setupImpl(obj,data) obj.pFileID = fopen(obj.Filename,'wb'); if obj.pFileID < 0 error('Opening the file failed'); end end % This System object writes the input to the file. function stepImpl(obj,data) fwrite(obj.pFileID,data); end % Use release to close the file to prevent the % file handle from being left open. function releaseImpl(obj) fclose(obj.pFileID); end % You indicate that no outputs are provided by returning % zero from getNumOutputsImpl function numOutputs = getNumOutputsImpl(~) numOutputs = 0; end end end