【问题标题】:Converting strings to numbers in matlab在matlab中将字符串转换为数字
【发布时间】:2016-06-30 19:53:10
【问题描述】:

我有一个数字元胞数组(字符串格式),我想在 matlab 中将其转换为数字。问题是它们是双引号的,我似乎无法使用 str2num 来转换它们。

a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'}

有什么方法可以这样做或从数字中删除双引号?谢谢!

【问题讨论】:

    标签: string matlab numbers


    【解决方案1】:

    您需要手动删除双引号。您可以使用cellfunanonymous function 应用于每个单元格。这里有两种可能的方法:

    1. 匿名函数只是去掉第一个和最后一个字符。如果双引号符号始终位于这些位置,则此方法有效:

      a = {'"15"'; '"16"'; '"17"'; '"30"'; '"50"'};
      result = cellfun(@(x) str2double(x(2:end-1)), a);
      
    2. 如果某些字符串可能不包含双引号符号,或者可能在任意位置包含多个符号,请使用匿名函数删除该符号的任何出现

      a = {'15'; '16'; '"17"'; '30"'; '"""50"""'};
      result = cellfun(@(x) str2double(x(x~='"')), a);
      

    【讨论】:

    • 使用regexp 会快一点,也许是更健壮的解决方案result = cellfun(@str2double, regexp(a, '\d+\.?\d*', 'match'))
    • @serial 好主意。但是,如果可能有负数或.123(不带前导0)之类的东西,则将修改正则表达式
    • @LuisMendo 没错:'(+|-)?\d*\.?\d*' 希望输入数据没有那么糟糕;)
    猜你喜欢
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多