Converting multiple cells to an equivilent character vector defining the original array

2 views (last 30 days)
As part of an app, I need to use a cell array containing characters to generate a string of text that when pasted in the command window would generate the original cell array as a variable.
input example: the 1×4 cell array named 'legText' with the below contents.
{'Indexed'} {'Forsterite'} {'Enstatite'} {'Diopside'}
Desired output (as a character vector)
legText={'Indexed','Forsterite','Enstatite','Diopside'};
I've been doing this by appending to a character vector in a loop without preallocation, but this is pretty inefficient. Is there a better method?
Thanks, Jessica.

Accepted Answer

Walter Roberson
Walter Roberson on 25 Dec 2018
fprintf('legText = cellstr(%s);\n', mat2str(string(legText)))
or
fprintf('legText = {'); fprintf('''%s'',', legText{:}); fprintf('};\n');
  1 Comment
Jessica Hiscocks
Jessica Hiscocks on 26 Dec 2018
Thank you, this got me 95% of the way there! It turned out that using the second option, changing to sprintf, and concatenating was the answer- the final comma does not affect the output
code:
temp=[sprintf('legText = {'), sprintf('''%s'',', legText{:}), sprintf('};')];
output:
legText = {'Indexed','Forsterite','Enstatite','Diopside',};

Sign in to comment.

More Answers (0)

Categories

Find more on Data Type Conversion 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!