Filter löschen
Filter löschen

add numerical array as column or in cell array

2 Ansichten (letzte 30 Tage)
Paul
Paul am 23 Nov. 2012
Kommentiert: Trung Hieu Le am 10 Jun. 2016
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!

Akzeptierte Antwort

Jan
Jan am 23 Nov. 2012
Bearbeitet: Jan am 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)

Weitere Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 23 Nov. 2012
Bearbeitet: Azzi Abdelmalek am 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 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 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
Trung Hieu Le am 10 Jun. 2016
It works well. Thanks a lot

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by