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

问题描述 投票:1回答:1

我正在尝试从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的代码行时才会这样做。为什么将结构转换为单元格,如何访问我的数据?提前致谢。

matlab structure
1个回答
0
投票

如果那些双引号确实在你的输入文件中,那就是绊倒importdata。这些引号使它认为每一行都是一个字符串,而不是二维数组中的一些空格分隔值。在这种情况下,每行只有一行文本,importdata回退到返回一个单元格数组,而不是使用datatextdatacolheaders字段返回该结构。

所以摆脱那些双引号!

或者使用textscanreadtable代替。 readtable可能是你想要的两个人。

© www.soinside.com 2019 - 2024. All rights reserved.