add numerical array as column or in cell array
Show older comments
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!
Accepted Answer
More Answers (1)
Azzi Abdelmalek
on 23 Nov 2012
Edited: Azzi Abdelmalek
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,[])
3 Comments
Jan
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
on 23 Nov 2012
Ok Simon,
outv=[arrayfun(@(x) cellstr(num2str(x)),a); C]
or
outh=[arrayfun(@(x) cellstr(num2str(x)),a)' C]
Trung Hieu Le
on 10 Jun 2016
It works well. Thanks a lot
Categories
Find more on Numeric Types in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!