cell array to string array
1,435 次查看(过去 30 天)
显示 更早的评论
fp31 ='#CC' '#CB' '#CN' '#CO' '#CP' '#CF' '#CS' '#CI' '#CQ' '#CW'
i have a cell array like this .. i want to convert every single cell of the array to string.
fp31(1)='#CC' should be string.
0 个评论
回答(3 个)
Walter Roberson
2018-6-13
In R2016b or later, you can do
fp31 = string({'#CC','#CB','#CN','#CO','#CP','#CF','#CS','#CI','#CQ','#CW'});
and then fp31(1) would be the scalar string "#CC" as a string object. The corresponding character vector would be fp31{1}
5 个评论
David Sanchez
2014-7-11
If your cell array is this:
fp31={'#CC','#CB','#CN','#CO','#CP','#CF','#CS','#CI','#CQ','#CW'};
access the elements using brackets:
fp31{1}
ans =
#CC
which will be a string array
4 个评论
Stephen23
2018-6-13
"Since it's related and took me awhile to realize, if the cell array is multi-dimensional like this:"
What your apparent "solution" shows is totally unrelated to whether a cell array is "multi-dimensional" or not, but is solely due to the fact that you have nested cell arrays. If you have actually tried your example multi-dimensional cell array (which does not contain nested cell arrays) with your suggested "solution" then you will find that you get an error (as Image Analyst has already shown). There is no reason why subscript indexing cannot be used to access the contents of a multi-dimensional cell array. If those cells happen to contain more cell arrays, then of course more cell array indexing will be required. And this is true for a scalar cell array, a vector cell array, or even a multi-dimensional cell array: it is unrelated to whether the cell array is multi-dimensional or not.
Jeff Bush
2018-6-13
@Stephen (and Image Analyst) - everything you said is spot on, I was clueless I had nested cell arrays. I deleted my comment since like you said, it's not related at all. Sorry for being retarded.
Image Analyst
2014-7-12
Try this:
fp31={'#CC','#CB','#CN','#CO','#CP','#CF','#CS','#CI','#CQ','#CW'}
c = char(fp31) % Create 2D character array.
If some of the strings in fp31 are longer than others I think it pads with spaces so that the array is rectangular, as all matrices must be.
That's how to convert to "strings", but like David said every single cell contains a string and you can get to it without doing anything, so we don't know why you're asking what you asked. I think the FAQ will give you a good intuitive feel for how cell arrays work: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F
5 个评论
Image Analyst
2014-7-12
Can you just use ismember. Maybe you can adapt my answer here: http://www.mathworks.com/matlabcentral/answers/141451#answer_144783
Image Analyst
2021-4-1
Starting with r2017b, there is also a convertCharsToStrings() function that people may want to know about. From the help:
Convert a cell array of character vectors to a string array.
C = {'Venus','Earth','Mars'}
C = 1x3 cell
{'Venus'} {'Earth'} {'Mars'}
str = convertCharsToStrings(C)
str = 1x3 string
"Venus" "Earth" "Mars"
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!