i have cell array m [1x4] [1x5] and a cell array named y whose dimensions are [1x4] [1x5]. i want to put the y cell array into m such that resulting m is [1x8] [1x5] e.g
m{1}=2 3 6 44
m{2}= 12 34 25 66
and
y{1}=10 5 1 8
y{2}=3 0 9 6 7
resulting m should be
m{1}=2 3 6 44 10 5 1 8
m{2}=12 34 25 66 3 0 9 6 7

 Akzeptierte Antwort

James Tursa
James Tursa am 12 Sep. 2017
Bearbeitet: James Tursa am 12 Sep. 2017

0 Stimmen

m = cellfun(@(A,B)[A B],m,y,'uni',false);

5 Kommentare

Shivik Garg
Shivik Garg am 12 Sep. 2017
thanks a lot
Shivik Garg
Shivik Garg am 12 Sep. 2017
Bearbeitet: Shivik Garg am 12 Sep. 2017
if m initially is empty how do you add y to it using the function that you have mentioned?
You will need to add code to initialize m. E.g., something like this
m = cell(size(y));
Or maybe you will need to have this execute conditionally, e.g.,
if( isempty(m) )
m = cell(size(y));
end
It is hard to say what the correct way of initializing m will be without seeing the code prior to the merger and where m comes from initially.
Shivik Garg
Shivik Garg am 12 Sep. 2017
initially m={}. i generate y of different sizes and keep adding it to m
James Tursa
James Tursa am 12 Sep. 2017
Bearbeitet: James Tursa am 12 Sep. 2017
So, if m={} initially, then you can use the 2nd method above with the if-test. Just put that immediately prior to the cellfun call.
But, what do you mean by "generate y of different sizes"? Will y have a different number of cell elements on each iteration? E.g., is it possible that on one iteration y will have 2 vectors, but on another iteration if might have 5 vectors?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by