How to horizontally concatenate the cells of a cell array with different contents into a string.
16 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Konstantinos Tsitsilonis
il 8 Nov 2018
Commentato: madhan ravi
il 8 Nov 2018
Hi All,
I have a cell array as the one below:
EXTR =
20×3 cell array
{[ 550]} {[2]} {'GAM'}
{[ 600]} {[2]} {'GAM'}
{[ 650]} {[2]} {'GAM'}
{[ 700]} {[2]} {'GAM'}
{[ 750]} {[2]} {'GAM'}
{[ 800]} {[2]} {'GAM'}
{[ 850]} {[2]} {'GAM'}
{[ 900]} {[2]} {'GAM'}
{[ 950]} {[2]} {'GAM'}
{[1000]} {[2]} {'GAM'}
{[1100]} {[2]} {'GAM'}
{[1200]} {[2]} {'GAM'}
{[1300]} {[2]} {'GAM'}
{[1400]} {[2]} {'GAM'}
{[1500]} {[2]} {'GAM'}
{[1600]} {[2]} {'GAM'}
{[1700]} {[2]} {'GAM'}
{[1800]} {[2]} {'GAM'}
{[1900]} {[2]} {'GAM'}
{[2000]} {[2]} {'GAM'}
How is it possible to create a cell array that looks like this:
EXTR =
20×3 cell array
{'550 2 GAM'}
{'600 2 GAM'}
{'650 2 GAM'}
.....
In words, I would like all my columns to be combined into one where their contents are a string with a single space between them.
I have tried things in the like of horzcat(EXTR{:}), however they are not working for this case, possibly because not all contents are of uniform type...
Thanks for your help in advance,
KMT.
0 Commenti
Risposta accettata
madhan ravi
il 8 Nov 2018
Modificato: madhan ravi
il 8 Nov 2018
c={{[ 550]} {[2]} {'GAM'}
{[ 600]} {[2]} {'GAM'}}
c=cellfun(@string,c)
join(c)
command window:
>> COMMUNITY
c =
2×1 string array
"550 2 GAM"
"600 2 GAM"
>>
3 Commenti
madhan ravi
il 8 Nov 2018
if you want to make it as cell array just put curly braces in and around i.e.,
c={join(c)} %at the end
Più risposte (1)
Stephen23
il 8 Nov 2018
Modificato: Stephen23
il 8 Nov 2018
An old-fashioned way (strings are probably easier):
>> C = {550,2,'GAM';600,2,'GAM';650,2,'GAM';700,2,'GAM';750,2,'GAM';800,2,'GAM';850,2,'GAM';900,2,'GAM';950,2,'GAM';1000,2,
'GAM';1100,2,'GAM';1200,2,'GAM';1300,2,'GAM';1400,2,'GAM';1500,2,'GAM';1600,2,'GAM';1700,2,'GAM';1800,2,'GAM';1900,2,'GAM';
2000,2,'GAM'};
>> D = C.';
>> S = sprintf('\n%d %d %s',D{:});
>> Z = regexp(S(2:end),'\n','split');
>> Z{:}
ans = 550 2 GAM
ans = 600 2 GAM
ans = 650 2 GAM
ans = 700 2 GAM
ans = 750 2 GAM
ans = 800 2 GAM
ans = 850 2 GAM
ans = 900 2 GAM
ans = 950 2 GAM
ans = 1000 2 GAM
ans = 1100 2 GAM
ans = 1200 2 GAM
ans = 1300 2 GAM
ans = 1400 2 GAM
ans = 1500 2 GAM
ans = 1600 2 GAM
ans = 1700 2 GAM
ans = 1800 2 GAM
ans = 1900 2 GAM
ans = 2000 2 GAM
0 Commenti
Vedere anche
Categorie
Scopri di più su Data Type Conversion in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!