如何在importdata()的结果中修复“此类型的变量不支持点索引”

时间:2019-04-13 21:44:31

标签: matlab structure

我正在尝试从csv文件导入数据。导入数据时,将创建一个具有两个字段的结构,但是两个结构都不可访问,因为会引发点索引错误。

这些是其中一个文件的前几行

"U0[m/s] U0_Sd U[m/s ]  U_Sd L[N ]  D[N] Horiz. Verti. 4/3/2019 3:21 PM"
"12.933 0.056   13.919  0.914 -177.404  -262.059    0.000   0.000"
"12.977 0.050   14.038  0.972   -177.387    -262.139    0.100   0.000" 
"12.947 0.053 14.073    1.040   -177.299    -262.086    0.200   0.000"
"12.965 0.051   14.007  1.037   -177.271    -262.140    0.300   0.000" 

代码如下:

path='directory_path';

files=dir(strcat(path,'*.csv'));

for file=files'

    cur_file=(strcat(path,file.name));
    file_struct=importdata(cur_file);
    file_data=file_struct.data;
end

我得到的错误是“这种类型的变量不支持点索引”,但是结构应该能够点索引。另外,当我进入工作区时,变量file_struct会显示为单元格而不是结构,但是只有当我包含初始化file_data的代码行时才会显示。为什么将结构转换为单元格,如何访问数据?预先感谢。

1 个答案:

答案 0 :(得分:0)

如果输入文件中确实存在双引号,那就是importdata的原因。这些引号使它认为每一行都是单个字符串,而不是二维数组中的一些用空格分隔的值。在这种情况下,每行只有一行文本,importdata会返回返回单元格数组,而不是返回带有datatextdata和{{1} }字段。

因此,请删除那些双引号!

或者使用colheaderstextscan代替。 readtable可能就是您想要的两个。