Create arrays of observations
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    CARLOTTA DENTICO
 le 4 Août 2021
  
    
    
    
    
    Commenté : Rik
      
      
 le 4 Août 2021
            Hello everybody, 
Probably it is a very silly question but I am struggling on it..
I have a series of observations saved as 'pt_mean_lev1_1' up to 'pt_mean_lev1_348' (see picture below) and I want to make an array of them being a = 1x348. How can I do that? 
Thank you very much!

3 commentaires
Réponse acceptée
  Sulaymon Eshkabilov
      
 le 4 Août 2021
        Here is one of the viable solutions with dynamically naming variables and attaining their values from the workspace.
a = [];
for ii=1:348
Var = strcat('pt_mean_lev1_', num2str(ii));
a=[a, eval(Var)];
end
3 commentaires
  Rik
      
      
 le 4 Août 2021
				In the screenshot you can see the number of elements of each element. Growing the array dynamically like this (instead of pre-allocating) results in terrible performance. I would also refrain from teaching people to use eval as the solution. As already evidenced in this thread, that is a source of trouble.
k=500000;N=100;%N=348 takes mare than the 55 second limit
tic
a = [];
for ii=1:N
    a=[a, rand(k,1)];
end
toc
tic
a = zeros(k,N);
for ii=1:N
    a(:,ii)=rand(k,1);
end
toc
Plus de réponses (2)
  CARLOTTA DENTICO
 le 4 Août 2021
        1 commentaire
  Sulaymon Eshkabilov
      
 le 4 Août 2021
				I meant a separate thread and not here. Two questions in one thread that is confusing.
  Rik
      
      
 le 4 Août 2021
        You should not name your variables dynamically. Why are you not storing them in an array when reading? What is wrong with the code below?
lon = ncread('topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc', 'longitude');
lat = ncread('topaz_V4_myocean_arctic_grid1to8_da_class1_19910115.nc', 'latitude'); 
fram = (lon>=0 & lon<=20 & lat>=76 & lat<=80);
pt_lev1_=zeros(size(pt_lev1,1)*size(pt_lev1,2),348);
for k = 1:348
    pt_lev1_(:,k) = reshape(pt_lev1(:,:,k),[],1);
end 
pt_mean_lev1_=mean(pt_lev1_(fram,1:k),1,'omitnan')
0 commentaires
Voir également
Catégories
				En savoir plus sur NetCDF dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


