【问题标题】:Reading a comma-separated string (not text file) in Matlab在 Matlab 中读取逗号分隔的字符串(不是文本文件)
【发布时间】:2021-10-28 09:54:12
【问题描述】:

我想在 Matlab 中读取一个字符串(不是外部文本文件),它的数值用逗号分隔,例如

a = {'1,2,3'}

我想将它存储在一个向量中作为数字。有没有什么功能可以做到这一点?我只找到用于处理文本文件的进程和函数。 谢谢

【问题讨论】:

    标签: string matlab text numbers comma


    【解决方案1】:

    我认为您正在寻找 sscanf

    A = sscanf(str,formatSpec)str 读取数据,并根据 转换为formatSpec 指定的格式,并以 大批。 str 是字符数组或字符串标量。

    【讨论】:

      【解决方案2】:

      你可以试试str2num功能:

      vec = str2num('1,2,3')

      如果您必须使用单元格a,根据您的示例,它将是:vec=str2num(a{1})

      文档中有一些安全警告需要考虑,因此请注意您的代码是如何被使用的。

      另一个更灵活的选项是 textscan。它可以处理字符串以及文件句柄。

      这是一个例子:

      cellResult = textscan('1,2,3', '%f','delimiter',',');
      vec = cellResult{1};
      

      【讨论】:

        【解决方案3】:

        我将使用 eval 函数来“评估”向量。如果是这样的结构,我也会使用 cell2mat 来获取 '1,2,3' 文本(这也可以通过其他方法来实现。

        % Generate the variable "a" that contains the "vector"
        a = {'1,2,3'};
        % Generate the vector using the eval function 
        myVector = eval(['[' cell2mat(a) ']']);
        

        让我知道此解决方案是否适合您

        【讨论】:

        • @Pablo 很高兴听到这个消息,但请注意using eval like this is discouraged。对于一次性数据导入来说没问题,但我不会在其他人会使用的代码中使用它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-02
        • 2011-09-22
        • 1970-01-01
        • 2019-04-05
        相关资源
        最近更新 更多