how preallocate structure for better memory
    198 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Salvatore Mazzarino
      
 il 22 Set 2012
  
    
    
    
    
    Commentato: Dyuman Joshi
      
      
 il 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?
0 Commenti
Risposta accettata
  Jan
      
      
 il 22 Set 2012
        
      Modificato: Jan
      
      
 il 2 Ott 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 Commenti
  Igor Gitelman
 il 20 Mag 2022
				thanks! that 
head = struct('number', cell(1, 10), 'pck_rv', cell(1, 10));
work fine!  
  Dyuman Joshi
      
      
 il 27 Mar 2024
				I am accepting Jan's answer as it provides a robust solution to the question posted.
Più risposte (2)
  Azzi Abdelmalek
      
      
 il 22 Set 2012
        
      Modificato: Azzi Abdelmalek
      
      
 il 22 Set 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 Commenti
  Jan
      
      
 il 2 Ott 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
 il 2 Ott 2017
				True, I just tried it out and realised it wasn't what I wanted either! Thanks for the response.
  Walter Roberson
      
      
 il 13 Dic 2012
        head = struct('number', {3, 5}, 'pck_rcv', {[1 0 0], [1 0 1]})
0 Commenti
Vedere anche
Categorie
				Scopri di più su Variables 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!








