Memory preallocation for array of objects with irregular array length property
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I have an array of objects from a class (let's say MyClass) and each object has as property an array of different length for each object. For example: MyClass_object(1).MyArray is 100x1 and MyClass_object(2).MyArray is 200x1.
Code for my class:
classdef MyClass < handle
properties
MyArray
end
methods
function obj = MyClass(array_length)
obj.MyArray = zeros(array_length,1);
end
end
end
Memory preallocation:
lengths = [100;200]
MyClass_object(1,:) = MyClass(lengths(1));
MyClass_object(2,:) = MyClass(lengths(2));
My question is: how is it possible to preallocate memory both for the objects and the arrays without coding one by one?
I tried this:
lengths = [100;200];
for i=1:length(lengths)
MyClass_object(i,:) = MyClass(lengths(i));
end
But then I get an warning: Variable appears to change in size in every loop iteration.
Note: vector "lengths" might have 50 or more values.
Thanks!
2 Commenti
James Tursa
il 30 Ago 2023
Please show a small example class and explain what problems you are having with setting properties of different objects to different sizes.
Risposte (1)
Walter Roberson
il 31 Ago 2023
Provided that MyClass_Object does not already exist:
lengths = [100;200];
NumL = length(lengths);
MyClass_Object(NumL, :) = MyClass(lengths(end));
for i=1:NumL-1
MyClass_object(i,:) = MyClass(lengths(i));
end
Vedere anche
Categorie
Scopri di più su Data Type Identification in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!