add numerical array as column or in cell array
Afficher commentaires plus anciens
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!
Réponse acceptée
Plus de réponses (1)
Azzi Abdelmalek
le 23 Nov 2012
Modifié(e) : Azzi Abdelmalek
le 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 commentaires
Jan
le 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
le 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
le 10 Juin 2016
It works well. Thanks a lot
Catégories
En savoir plus sur Numeric Types dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!