【问题标题】:Read numeric values contained in double quotes from CSV file从 CSV 文件中读取双引号中包含的数值
【发布时间】:2018-05-25 11:33:36
【问题描述】:

我曾尝试使用 MATLAB 从来自 CSV 文件的表中提取数据(以便我可以绘制它)但徒劳无功。 CSV 文件不同于我之前遇到的任何文件,可以在这里找到:https://www.bis.org/statistics/full_webstats_credit_gap_dataflow_csv.zip

问题在于,例如,在 CSV 文件中,所有内容都用双引号标出; “私营非金融部门”、“”或“-57.2”。因此,当我对仅包含数字的部分使用 MATLAB 函数 readtabletextscantable2array 时,它将它们作为单元格向量输出,例如:1×5 单元格数组; '56.6' '57' '57.2' '57.9' '58.3'

如果我随后调用单个单元格,它会将其输出为T{1}='56.6',但在工作区中将其视为Size 1x4Value '56.6',即MATLAB 不将其视为数字56.6,而是将其视为符号集合。

谁能告诉我如何在 MATLAB 中使用这个复杂的 CSV 文件,以便我可以绘制在特定行中找到的数据?

提前致谢!

编辑:我在使用readtabletextscan时尝试了不同的格式,例如%q

【问题讨论】:

    标签: matlab csv


    【解决方案1】:

    有很多方法可以做到这一点,但如果您已经知道如何提取包含所需数据的元胞数组的子集,您可以使用 str2double 简单地转换它:

    >> ca = {'56.1' '13' '12.2' '4.7'}
    
    ca =
    
      1×4 cell array
    
        '56.1'    '13'    '12.2'    '4.7'
    
    >> str2double(ca)
    
    ans =
    
       56.1000   13.0000   12.2000    4.7000
    

    【讨论】:

    • 谢谢!我之前什至尝试过 str2double 并且由于某种原因无法让它工作,但现在它很好。对于未来的读者:它适用于我 readtable => table2array (只选择数字) => str2double
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多