Clarification: Array of strings vs cell array of character vectors

14 views (last 30 days)
I'm beginning to code a new project. I'll have multi-tiered structures to work with, and some of the fields will have labels and comments on certain data entries. I can put these in as arrays of strings OR as cell arrays of character vectors.
comment1 = strings('hello','world','!'); %3x1 string
%vs
comment2 = cellstr(['hello','world','! ']); %3x1 cell
Do you find one is easier to work with than another? I'm leaning towards arrays of strings. It's easier to set up at least.

Accepted Answer

James Tursa
James Tursa on 1 Nov 2016
Edited: James Tursa on 1 Nov 2016
Generally, if you will be accessing the individual strings downstream in your code, use a cell array of strings. Many MATLAB functions are already coded to handle these naturally. E.g.,
comments = {'hello','world','!'};
If you also need to concatenate them later on you can always do this:
comment = [comments{:}];

More Answers (1)

Walter Roberson
Walter Roberson on 1 Nov 2016
The string() data type is very new. I am still trying to figure out what it is good for.
It does add a layer of object transparency, allowing you to say
A(K) = B
without having to know that you instead need to do
A{K} = B
because the content happens to be a character vector. That is good over the long term for object oriented processing.
But in practical terms, the only benefit I have seen to date is that finally we can answer those questions where a student is asked to store a character vector into "a" location. Like the assignments where the student has to write a function that accepts a matrix and returns a matrix of the same size in which each entry of the output matrix is either 'odd' or 'even'. I am convinced that the people who make up the homework assignments do not know much about MATLAB.

Categories

Find more on Structures in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!