Converting table within Cell arrays to matric in Matlab
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Muhammad Usman Saleem
el 6 de Feb. de 2022
Comentada: Muhammad Usman Saleem
el 8 de Feb. de 2022
I'm proccessing daily temperature data since 1991 to 2022. I've proccess them into over 36 different area of interests and convert them into cell array of size 30*36 (past 30 years daily data over 36 locations). See below the screen shot of my output variable which contains this data:
When I clicked on the cell output{1,1} , it's showed me a table having two columns i.e., Date and Soilw (Date column contains date corresponding to temperature --soilw). See the image below:
I want to get all temperature data on 36 locations since past 30 years so, I want a cell array of size (1*36). In this cellarray{1,1} will contains a table having two columns first will be dates since 1991-2022 and second column as Soilw (Temperature). Please see below
Note: The above image just showing one year data (356 days) into 36 locations how can I make 30 years data in this cell array over 36 locations?
Many thanks for solution of this problem?
Respuesta aceptada
Voss
el 6 de Feb. de 2022
You don't state how, in each cell of your wantedcell, you want to combine 30 tables with 365 rows each into one table with 365 rows, but I'll assume it's by averaging each day's data over the 30 years for that given location:
% some variables the same size and type as yours:
t = table((1:365).',randn(365,1));
c = repmat({t},30,36);
% to average all years' data by day for each location:
[m,n] = size(c);
new_c = cell(1,n);
for ii = 1:n
data = zeros(365,1);
for jj = 1:m
data = data+c{jj,ii}{:,2};
end
data = data/m;
new_c{ii} = table((1:365).',data);
end
new_c
I've used 1:365 for the days of the year. You may use datetime() variables instead.
3 comentarios
Voss
el 8 de Feb. de 2022
Something like this should work:
% some variables the same size and type as yours:
t = table((1:365).',randn(365,1));
c = repmat({t},30,36);
n = size(c,2);
new_c = cell(1,n);
for ii = 1:n
new_c{ii} = vertcat(c{:,ii});
end
class(new_c{1})
size(new_c{1})
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!