MATLAB Answers

Concatenate cells leaving columns/rows empty

11 views (last 30 days)
Miquel on 7 Nov 2019
Commented: Miquel on 7 Nov 2019
If I want to concatenate 2 cells I can use []. For example:
>> a={'lala'};b={'lolo'};c=[a,b]
c =
1×2 cell array
{'lala'} {'lolo'}
However, if I want to leave a column (or row if I'd had concatenated them vertically) empty, I have to create an empty array to "occupy" the space:
>> d=cell(1,1);
>> c=[d,a,b]
c =
1×3 cell array
{0×0 double} {'lala'} {'lolo'}
I have not been able to change the position of a and b without creating the empty cell. Is there a way to choose their position just by indexing? I don't really care what the "empty cell" is.


Sign in to comment.

Accepted Answer

Guillaume on 7 Nov 2019
Do you mean this:
c = {}; %or better if you know the final size:
%c = cell(1, 3);
c(1, [1 3]) = [a,b]; %put a at column 1 and b at column 3


Miquel on 7 Nov 2019
Yes! Thanks :)
Although I'm still playing wit it, I think I understand how to use it. However I don't get why it works and would have never done it myself. Could you tell me the logic behind it, please?
Guillaume on 7 Nov 2019
It's a simple assignment using indexing. As long as the left-hand and right-hand side have the same size (or the right-hand side is scalar) it just work.
c(1, [1 3]) is a two-element portion of the destination cell array to which you assign a two-element cell array.

Sign in to comment.

More Answers (0)




Community Treasure Hunt

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

Start Hunting!