Custom object class array initilization within Simulink Matlab Function Block

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

ANSWER

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

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}

SEE COMPLETE ANSWER CLICK THE LINK

--

--

--

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

How To Install PyCUDA On NVIDIA Jetson Xavier NX & Jetson Nano Devices

Business Law

business law

Drive connected Win Apps in Docker

What’s new in Elsa 2.0

Mobile App Development Trends That Will Rule 2021

Level UP your Kotlin data class using extensions.

Coding Bootcamp is Really Just a Rollercoaster Ride

StatefulWidget’s Key & State

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Technical Source

Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

More from Medium

Is it possible to ignore the dropped packet/frame error during

Just a Face in the Crowd

Batch, Stochastic & Mini-Batch Gradient Descent Algorithms

Neural Networks play Chrome’s Dino Game with NEAT-Python 🦖