Preallocating a structure with a changing number of rows within a field
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Christoper Angelo Malayan
 il 9 Gen 2021
  
    
    
    
    
    Commentato: Bruno Luong
      
      
 il 10 Gen 2021
            Hi all. I'm relatively new in MATLAB and I'm trying to optimize my code.
I have this function:
function G = GroupM1(A,num_K)
%Grouping r according to m1 and arranging from high to low
for i = [1:num_K]
    G(i).dist = A(A.m1 == i,:);
    G(i).dist = sortrows(G(i).dist, string(i),'ascend'); 
end 
end
It produces a structure 'G' (see attached file)
'A' is just a 100x17 table. And In this case, num_K == 9. The number of rows in structure 'G' is always equal to num_K. 
My questions is:
How can I preallocate this structure 'G' that has 1 field (.dist) containing different sized tables so that the row number is always equal to num_K?
Any help is appreciated. Thank you.
0 Commenti
Risposta accettata
  Bruno Luong
      
      
 il 9 Gen 2021
        There is no need to preallocate a field (or in fact any variable) if you don't grow the array itself in a loop, which is your case.
2 Commenti
  Bruno Luong
      
      
 il 10 Gen 2021
				I though you want to prealloacate the fields.
If you want to preallocate the structure array G do this before the loop
G = struct('dist',cell(1,num_K));
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Structures 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!