Custom object class array initilization within Simulink Matlab Function Block

Michael · Sep 30, 2021 · 2.1K views
Question
The summary of my question is I need know how to preallocate an array of custom objects in a way that is compatible with Simulink when using the Matlab Function block in Simulink.   Details: I am attempting to port over some code I have written in Matlab to run as a function in Simulink using the "Matlab Function" block. I have created a custom class called "pulse." (minimal example at the bottom of this question). I want to be able to initialize an array of these pulse objects. My Matlab code works fine now with the call:   pulse_array(1:2,1:4) = pulse; This creates a 2x4 array of pulse objects as expected. The problem I am having is when I use my code within Simulink. When I try to run this same line within the Simulink Matlab Function block I get the error:   Undefined function or variable 'pulse_array'. The first assignment to a local variable determines its class.   It looks to me like the coder doesn't know that pulse_array should be a pulse object. To try to fix this, I tried to intialize pulse_array as a pulse object and then expand the array with for loops:   pulse_array = pulse; for i = 1:2 for j = 1:4 pulse_array(i,j) = pulse; end end Simulink didn't like that either, as the loop trys to specify pulse_array(1,2) when it believed the size of pulse_array is 1x1 (I get size mismatch errors, which isn't totally unexpected). I understand this, as coder needs to know the size of the array.....this is why I tried the initial call of pulse_array(1:2,1:4) = pulse.   Any help would be....extremely helpful.   classdef pulse properties A %Amplitude end methods function obj = pulse(A) if nargin>0 %Allows for array construction https://www.mathworks.com/help/matlab/matlab_oop/initialize-object-arrays.html obj.A = A; end end end end  
Expert Answer
Profile picture of Kshitij Singh
Kshitij Singh PhD Expert
Answered Aug 12, 2026

According to the documentation for MATLAB Classes for Code generation, creation of arrays of objects is not supported yet. As a workaround, you could define a cell - array to store the objects, as such:

 

 

pulse_array = cell(2,4);
for idx = 1 : 8
    pulse_array{idx} = pulse;
end


pulse_array =

  2×4 cell array

    {1×1 pulse}    {1×1 pulse}    {1×1 pulse}    {1×1 pulse}
    {1×1 pulse}    {1×1 pulse}    {1×1 pulse}    {1×1 pulse}
100% Run Guarantee 3-Hour Fast-Track Delivery

Need a Custom Version or Complete Simulation for This Problem?

Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.

Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!