Using an empty vector as a parameter in a user-defined block
    4 views (last 30 days)
  
       Show older comments
    
    Pieter Cuijpers
 on 4 Oct 2016
  
    
    
    
    
    Commented: Pieter Cuijpers
 on 13 Oct 2016
            I am new to coding my own blocks, and quickly ran into something I do not understand. When I simply add an empty vector as a property to my block as in the code below, I get an error (Invalid setting in block 'Dataflow/MATLAB Discrete-Event System' for parameter 'InputRateVector') but only after I try to run a simulation. It seems that having an empty vector as a property is okay, but having an empty vector as block parameter is not. Why is that? (For my purpose, having an empty vector really makes sense in some situations...)
PS. The code below is simply the standard "MatlabBlock" definition for discrete event systems, with one line added to create the property and two functions added to make sure there are no inputs or outputs to this block (that will change later when I understand what happened here...).
Thnx. Pieter
classdef MyBlock < matlab.DiscreteEventSystem & matlab.system.mixin.Propagates
    % Public, tunable properties.
    properties 
      InputRateVector = [ ];
    end
    properties (DiscreteState)
    end
    % Pre-computed constants.
    properties (Access = private)
    end
    methods (Access = protected)
        function num = getNumInputsImpl(obj)
            num = 0;
        end
        function num = getNumOutputsImpl(obj)
            num = 0;
        end
        function setupImpl(obj,u)
            % Implement tasks that need to be performed only once, 
            % such as pre-computed constants.
        end
        function [entity, events] = entryImpl(obj, storage, entity, source)
            % Specify event action in response to entity entry to a storage.
            events = [];
        end
        function resetImpl(obj)
            % Initialize discrete-state properties.
        end
    end
end
0 Comments
Accepted Answer
  Dimitris Iliou
    
 on 12 Oct 2016
        If I understand correctly, running a Simulink model with an empty vector as a block parameter results in an error.
This behavior occurs not only with the DiscreteEventSystem block, but also with basic Simulink blocks like Gain. I do not think that it is possible to pass an empty vector as a block parameter.
Since in your case it makes sense to use the empty vector, I would suggest to use an alternative approach. Try setting the parameter to -1 instead of an empty vector and use that as a flag for your system.
More Answers (0)
See Also
Categories
				Find more on Discrete-Event Simulation in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
