## add numerical array as column or in cell array

### Paul (view profile)

on 23 Nov 2012
Accepted Answer by Jan Simon

### Jan Simon (view profile)

How to add a numerical array

` a=[1 2 3 4]`

as row into my cell

``` C = |'a' 'b' 'c' 'd'|
|'e' 'f' 'g' 'h'|
|'i' 'j' 'k' 'l'|
|'m' 'n' 'o' 'p'|```

so, that

``` C = |'1' '2' '3' '4'|
|'a' 'b' 'c' 'd'|
|'e' 'f' 'g' 'h'|
|'i' 'j' 'k' 'l'|
|'m' 'n' 'o' 'p'|```

or as new column into cell C:

```C = |'1' 'a' 'b' 'c' 'd'|
|'2' 'e' 'f' 'g' 'h'|
|'3' 'i' 'j' 'k' 'l'|
|'4' 'm' 'n' 'o' 'p'|
```

(the numerical values become strings).

AND: How to transform for example a 2x4 cell into a 1x8 (or 8x1) cell:

``` C= |'a' 'b' 'c' 'd'|       ----> C = |'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h'|
|'e' 'f' 'g' 'h'|
or:----> C = |'a'|
|'e'|
|'b'|
|'f'|
|'c'|
|'g'|
|'d'|
|'h'|```

I can solve these problems with for-loops, but imagine you have a huge size of the cell array, it is not very efficient. Is there an easier way? Thanks!

## Products

No products are associated with this question.

### Jan Simon (view profile)

Answer by Jan Simon

### Jan Simon (view profile)

on 23 Nov 2012
Edited by Jan Simon

### Jan Simon (view profile)

on 23 Nov 2012
```C = {'a' 'b' 'c' 'd'; ...
'e' 'f' 'g' 'h'; ...
'i' 'j' 'k' 'l'; ...
'm' 'n' 'o' 'p'};
a     = [1 2 3 4];
tmp   = sprintf('%g*', a);
tmp(end) = [];
aC    = regexp(tmp, '*', 'split');
C_row = cat(1, aC,  C);  % Insert as row
C_col = cat(2, aC', C);  % Insert as column
```
```C2 = reshape(transpose(C), 1, [])
C3 = reshape(C, [], 1)
```

### Azzi Abdelmalek (view profile)

Answer by Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

on 23 Nov 2012
Edited by Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

on 23 Nov 2012
``` C = {'a' 'b' 'c' 'd'
'e' 'f' 'g' 'h'
'i' 'j' 'k' 'l'
'm' 'n' 'o' 'p'}
a=[1 2 3 4]```
` out=[num2cell(a); C]`

%or

` out=[num2cell(a')  C]`

% for third case

` out=C(:)'`

%or

` out=reshape(C,1,[])`

Jan Simon

### Jan Simon (view profile)

on 23 Nov 2012

@Azzi: Paul asked for "the numerical values become strings", but NUM2CELL replies {1,2,3,4} instead of the wanted {'1', '2', '3', '4'}.

Azzi Abdelmalek

### Azzi Abdelmalek (view profile)

on 23 Nov 2012

Ok Simon,

```outv=[arrayfun(@(x) cellstr(num2str(x)),a); C]
```

or

```outh=[arrayfun(@(x) cellstr(num2str(x)),a)'  C]
```

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

### Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.