Filter löschen
Filter löschen

how preallocate structure for better memory

338 Ansichten (letzte 30 Tage)
Salvatore Mazzarino
Salvatore Mazzarino am 22 Sep. 2012
Kommentiert: Dyuman Joshi am 27 Mär. 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?

Akzeptierte Antwort

Jan
Jan am 22 Sep. 2012
Bearbeitet: Jan am 2 Okt. 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 Kommentare
Igor Gitelman
Igor Gitelman am 20 Mai 2022
thanks! that
head = struct('number', cell(1, 10), 'pck_rv', cell(1, 10));
work fine!
Dyuman Joshi
Dyuman Joshi am 27 Mär. 2024
I am accepting Jan's answer as it provides a robust solution to the question posted.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Azzi Abdelmalek
Azzi Abdelmalek am 22 Sep. 2012
Bearbeitet: Azzi Abdelmalek am 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 Kommentare
Jan
Jan am 2 Okt. 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 am 2 Okt. 2017
True, I just tried it out and realised it wasn't what I wanted either! Thanks for the response.

Melden Sie sich an, um zu kommentieren.


Walter Roberson
Walter Roberson am 13 Dez. 2012
head = struct('number', {3, 5}, 'pck_rcv', {[1 0 0], [1 0 1]})

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by