how to make 3d array by stacking 2d arrays from sentinel 5p data?
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
the cyclist
2021 年 6 月 15 日
編集済み: the cyclist
2021 年 6 月 15 日
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 件のコメント
the cyclist
2021 年 6 月 15 日
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) = []
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で NetCDF についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!