从 MATLAB 中字符串的开头和结尾删除 '''
Posted
技术标签:
【中文标题】从 MATLAB 中字符串的开头和结尾删除 \'\'\'【英文标题】:Remove ''' from beginning and end of the strings in MATLAB从 MATLAB 中字符串的开头和结尾删除 ''' 【发布时间】:2015-08-11 21:20:03 【问题描述】:我们如何在 MATLAB R2015a 的元胞数组中从字符串的开头和结尾删除 '''
?假设我们有这个元胞数组:
当我们打开其中一个单元格时,我们会看到:
我想将整个单元格数组转换为双精度(数字)。假设输出元胞数组是final
。使用cellfun(@str2double,final)
为所有单元格返回Nan
。 str2double(final)
也返回 Nan
。
附言。
命令提示符中final
的最后10 个元素具有以下结构:
ans =
''2310''
''2319''
''2313''
''2318''
''2301''
''2302''
''2303''
''2312''
''2304''
''2309''
【问题讨论】:
@rayryeng 。您提出的重复答案在这里不起作用。有什么建议或提示吗? 为什么它不起作用?用您的尝试更新您的帖子,并向我们展示出了什么问题。我们不是读心术。如果您可以将您的数据发布到某个地方供我们查看,那也将是卓有成效的。 如果你得到NaN
,那么你的元胞数组不是你说的那样。请向我们展示当您执行 final(1:20)
时的输出,例如在 MATLAB 命令提示符中。请不要向我们提供您工作区的屏幕截图。
谢谢。帖子已更新。
重新打开,我已经给出了答案。祝你好运!
【参考方案1】:
您可以用任何内容替换所有撇号字符,然后将str2double
应用于元胞数组中的每个元胞。
鉴于您的单元格存储在final
,请执行以下操作:
final_rep = strrep(final, '''', '');
out = cellfun(@str2double, final_rep);
基本上,使用strrep
将所有撇号字符替换为空,然后通过cellfun
将str2double
应用于单元格数组中的每个单元格。
鉴于你上面的例子:
final = '''2310'''
'''2319'''
'''2313'''
'''2318'''
'''2301'''
'''2302'''
'''2303'''
'''2312'''
'''2304'''
'''2309''';
我们现在得到了这个:
>> out =
2310
2319
2313
2318
2301
2302
2303
2312
2304
2309
>> class(out)
ans =
double
如您所见,数组的输出是double
,正如我们所料。
【讨论】:
以上是关于从 MATLAB 中字符串的开头和结尾删除 '''的主要内容,如果未能解决你的问题,请参考以下文章