matlab中cell类型转成str类型怎么转?谢谢!

我有一个很大的cell,每个里面有都有一个字符串,每个字符串都被定义成了cell,我想把它们都变成string类型,貌似没有cell2str这样的函数。应该怎么转?谢谢!

其实很简单,用char这个函数就可以了:
>> cs
cs =
'abc'
'defg'
'hi'
>> s = char( cs )
s =
abc
defg
hi
>> whos
Name Size Bytes Class Attributes
cs 3x1 198 cell
s 3x4 24 char追问

转一个是可以,写成循环就不行了。
r1=char(r1_1(1));转换成功了。
写成:
for i=1:size(r1_1,2)
r1(1,i)=char(r1_1(i));
end
就报错了:Subscripted assignment dimension mismatch.

追答

我觉得根本就不用循环,char直接就可以把cell序列整体转换为一个m行n列的字符矩阵
由于字符矩阵要求每行的字符数必须一样,所以较短的字符串后面会补空格

追问

果然是这样,但问题是这样做会把每个字母都放进一个矩阵的一个元素里面,我只想把字符串拿出来,不想把字符串打断成一个一个字母放在矩阵里面。

追答

matlab和c++c#这些语言不一样,没有string这种类型,m里的字符串说白了就是字符矩阵,所以你处理字符串只有两条路,或者用字符矩阵,或者包装为cell。上面说的,其实最后的矩阵,每一行就是一个字符串,只不过有些行会有多余的空格

追问

多谢多谢。后来搞定了,在循环里面写成
r1=r1_1{i};
r1就是字符串,因为我之前写的一个函数是字符串之间的比较,所以只能转化成两个字符串才能用那个函数,我才那么费劲地转,然后在调用我前面写好的函数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-14
x=string(C)
C是元胞数组
第2个回答  2017-12-14
S(i)是cell,S{i}是string。
相似回答