Combining cells into a single cell

Hi there
I have a variable called z in a 9x1 cell. See the picture:
1.png
Is ther anyway to combine the cells to one cell like 360<181x1080?
Because when I run my data, z{:} in my code, I got the error "Expected one output from a curly brace or dot indexing expression, but there were 9 results."
So I think I should combine my 9 cells to one so I have one result?

5 Comments

What do you mean by < operator in this term: 360<181x1080?
And could you please share your code how do you use z{:} ?
Dou you want to merge all of these double arrays inside your z?
Stephen23
Stephen23 on 28 Dec 2018
Edited: Stephen23 on 28 Dec 2018
"Is ther anyway to combine the cells to one cell like 360<181x1080?"
Your 9x1 cell array contains double arrays (not cell arrays), so the combined array will also be a double array (not a cell array as you wrote).
It's here I use the z{:}
for i = 1:Nfiles
lon{i} = ncread(ncfiles(i).name, 'longitude');
lat{i} = ncread(ncfiles(i).name, 'latitude');
time{i} = ncread(ncfiles(i).name, 'time');
z{i} = ncread(ncfiles(i).name, 'z');
end
nx = length(lon{i});
ny = length(lat{i});
nt = length(vertcat(time{:}));
zmean = zeros([nx ny]);
blocks = zeros(nx);
for n = 1:nt
zx(:,1:ny) = z{:}(:,ny:-1:1);
zmean = zmean + zx;
end
Stephen23
Stephen23 on 29 Dec 2018
Edited: Stephen23 on 29 Dec 2018
If z is non-scalar (i.e. has zero or multiple cells) then this syntax will throw an error:
z{:}(:,ny:-1:1);
Do you have a question about the code that you showed us? I notice that the code you show does not use either of the answers that you have been given.
Jonas Damsbo
Jonas Damsbo on 29 Dec 2018
Edited: Jonas Damsbo on 29 Dec 2018
It's here I want a single cell for z. But I think Star Strider have make an answer I can use.

Sign in to comment.

 Accepted Answer

See if the cat (link) or cell2mat (link) or both will help solve your problem.
Example —
M{1} = rand(3,4,2);
M{2} = rand(3,4,2);
M{3} = rand(3,4,2);
Mcat = cat(3, M(1),M(2),M(3));
Mdbl = cell2mat(Mcat);
producing:
SizeMdbl = size(Mdbl)
SizeMdbl =
3 4 6
This seems to be the sort of result you want.

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!