How can I save 3d arrays in a cell array?

9 visualizzazioni (ultimi 30 giorni)
I have two 3d arrays (138x155x24) but I can't put it in only cell array. How can I do that?
Thanks for any help!
  2 Commenti
James Tursa
James Tursa il 16 Giu 2018
You certainly can put 3D arrays into a cell array. Please post what variables you have and also post the code you are currently trying, and what you want to get as a result.
Miriã  Gollmann
Miriã Gollmann il 16 Giu 2018
Sorry, I forgot.
I have seven days with hours values of wind velocity. This variable has 24 data array (lon x lat), with dimension longitude x latitude x hours.
My problem is: Using ncread, save arrays of wind velocity (lon x lat) in X-axis (u) and Y-axis (v) in a cell array. Each line have to show the 24 matrix of data of one day.

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 16 Giu 2018
data = cell(1,2);
for K = 1 : 2
data{K} = rand(138, 155, 24);
end
and now data is a cell array with two entries, each containing a 138 x 155 x 24 array.
  2 Commenti
Miriã  Gollmann
Miriã Gollmann il 16 Giu 2018
Thank you!
Should I use exactly this command?
And do you know how can I plot it?
Walter Roberson
Walter Roberson il 16 Giu 2018
dinfo = dir('*.nc');
nfile = length(dinfo);
data = cell(nfile, 1);
for K = 1 : nfile
thisfile = dinfo(K).name;
data{K} = mat2cell( ncread(thisfile, 'velocity'), 3 ); %split on 3rd dimension
end
This would give you a cell array, data, with one entry per file. Each entry would itself be a cell array of length 24, each containing one lon x lat entry.
Note: you might find that you get lat x lon entries instead of lon x lat. If so then
data{K} = mat2cell( permute(ncread(thisfile, 'velocity'), [2 1 3], 3 ); %split on 3rd dimension

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Type Conversion 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!

Translated by