MATLAB Answers


Concatenate cells leaving columns/rows empty

Asked by Miquel
on 7 Nov 2019
Latest activity Commented on by Miquel
on 7 Nov 2019 at 19:28
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.




1 Answer

Answer by Guillaume
on 7 Nov 2019 at 17:01
 Accepted Answer

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


on 7 Nov 2019 at 17:17
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?
on 7 Nov 2019 at 17:24
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.
on 7 Nov 2019 at 19:28

Sign in to comment.