how to make 3d array by stacking 2d arrays from sentinel 5p data?
    6 views (last 30 days)
  
       Show older comments
    
    SWARNENDU PAL
 on 15 Jun 2021
  
    
    
    
    
    Commented: the cyclist
      
      
 on 15 Jun 2021
            I have 36 different netcdf files for one month. Every file contains an array of 215x3245 size. Now i want to make an 3d array of size 36x215x3245 using those 36 different files. I could not upload the files as those are really big files. I can provide the code for doing this thing : 
files = dir('S5P_OFFL_L2__CH4____201901*.*');
for j = 1:36
    hello(i,:,:) = ncread(files(i).name,'/PRODUCT/methane_mixing_ratio');
end
I have the file name type in the first line. Total 36 files are there with this name. Now in every file the variable '/PRODUCT/methane_mixing_ratio' has a size of 215x3245. Now I want to stack all these 36 files using loop. How can I do that? Thank you. 
0 Comments
Accepted Answer
  the cyclist
      
      
 on 15 Jun 2021
        
      Edited: the cyclist
      
      
 on 15 Jun 2021
  
      You are looping over the wrong dimension in your code. You want something like this:
files = dir('S5P_OFFL_L2__CH4____201901*.*');
% Preallocate the large array
hello = zeros(215,3245,36);
% Fill in each "slice" along the 3rd dimension
for j = 1:36
    hello(:,:,j) = ncread(files(i).name,'/PRODUCT/methane_mixing_ratio'); % Note that I shifted j to the third position
end
4 Comments
  the cyclist
      
      
 on 15 Jun 2021
				Obviously, we cannot know why one of your input files has an extra column. That is something you'll need to figure out.
After you figure that out, it is easy to delete a single column from an array, if that is the solution:
% Define a random input
rng default
A = rand(4,3)
% Delete the 2nd column:
A(:,2) = []
More Answers (0)
See Also
Categories
				Find more on NetCDF in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
