Effacer les filtres
Effacer les filtres

how preallocate structure for better memory

338 vues (au cours des 30 derniers jours)
Salvatore Mazzarino
Salvatore Mazzarino le 22 Sep 2012
Commenté : Dyuman Joshi le 27 Mar 2024
I had created a structure made so:
head.number = 3;
head.pck_rcv = [1 0 0];
heads(2).number = 5;
head(2).pck_rcv = [1 1 0];
and so on.
How can I preallocate a structure?

Réponse acceptée

Jan
Jan le 22 Sep 2012
Modifié(e) : Jan le 2 Oct 2017
for k = n:-1:1 % Backwards!
head(k).number = 3;
head(k).pck_rcv = [1 0 0];
end
Now the final size of the struct array is created in the first iteration.
[EDITED] Alternatively:
head = struct('number', cell(1, 10), 'pck_rv', cell(1, 10));
Now head is a [1 x 10] struct array withe the fields 'number' and 'pck_rv'. Pre-allocating the contents of the fields is another job and you need a loop to do this. But now it can run in forward direction also.
  5 commentaires
Igor Gitelman
Igor Gitelman le 20 Mai 2022
thanks! that
head = struct('number', cell(1, 10), 'pck_rv', cell(1, 10));
work fine!
Dyuman Joshi
Dyuman Joshi le 27 Mar 2024
I am accepting Jan's answer as it provides a robust solution to the question posted.

Connectez-vous pour commenter.

Plus de réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 22 Sep 2012
Modifié(e) : Azzi Abdelmalek le 22 Sep 2012
heads=struct('numbers',zeros(10,1), 'pck_rcv',zeros(10,3))
%then
for k=1:n
heads.numbers(k)=2
heads.pck_rcv(k,:)=[1 2 3]
end
  3 commentaires
Jan
Jan le 2 Oct 2017
@Alexandra: I do not agree. Salvatore asked for a struct array: "head(2).numbers and so on". Azzi's suggestion creates a scalar struct only.
Alexandra Simpson
Alexandra Simpson le 2 Oct 2017
True, I just tried it out and realised it wasn't what I wanted either! Thanks for the response.

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 13 Déc 2012
head = struct('number', {3, 5}, 'pck_rcv', {[1 0 0], [1 0 1]})

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by