与readtable误差函数

20视图(30天)
L 'O.G。
L 'O.G。 2022年4月1日
评论道: L 'O.G。2022年4月2日
我有一个非标准的文件格式,我想读并运行以下:
Y = readtable (fileID.name,“文件类型”,“文本”);
文件标识的结构。然而,我得到一个错误:
错误使用readtable(第197行)
一个错误发生在试图确定“readData”是一个函数
的名字。
注意:readtable检测以下参数:
“分隔符”,”、“,“HeaderLines”,,“ReadVariableNames”,真的,“格式”,
为什么我得到这个错误?是什么 readData 吗?我找不到任何信息。如何绕过这个限制吗?这个函数 readtable 运行很好,没有错误,在MATLAB r2021b我的笔记本电脑,但是我只有2018年访问老版本在集群上,我使用和没有管理员权限。 编辑: 我将在最后一个例子在这里发表评论。
12个评论

登录置评。

接受的答案

每•艾萨克森
每•艾萨克森 2022年4月2日
编辑:每•艾萨克森 2022年4月2日
我认为整个文本文件和结果符合您的RAM。
“巨大的”对不同的人意味着不同的东西。这个函数读取和解析20 k线文件在0.1秒。
我认为你可以通过更换显著提高性能 parfor()的()。
% %
一个= cssm_ (“test_lammpstrj.txt”);
大小(一个)
ans = 1×3
11 7 3
(::3)
ans = 11×7
0 1 0 50 68 52 1 1 2 0 50 50 67 51 1 2 0 0 49 68 1 3 0 0 48 69 51 1 4 2 0 48 68 51 1 5 0 0 47 67 50 1 6 2 0 48 66 49 1 7 2 0 48 66 50 1 8 2 5 0 48 65 51 1 9 0 47 66 51
% %
%抽搐
% = cssm_ (test_lammpstrj_large。txt”);% 20003行
% toc
%运行时间是0.101381秒。
%运行时间是0.101189秒。
% %
函数num = cssm_ (ffs)
% %
fid = fopen (ffs,“rt”);
装备=重塑(从文件中读(fid,“*字符”),1,[]);
(~)=文件关闭(fid);
% %
cac = regexp(空空的,“单品:步伐\ n”,“分裂”);
len =大小(cac - 2);
num =南(11、7 len-1);% cac{1}是空的
jj = 2:兰
ccc = textscan (cac {jj},' % d % d % d % d % d % d % d ',“Headerlines”8“CollectOutput”,真正的);
num (:,:, jj-1) = ccc {1};
结束
结束

答案(1)

沃斯
沃斯 2022年4月2日
我不知道这个错误 readtable 是,但是这是一种读文本文件(我给的吗 扩展 . txt但是没关系)并返回一个单元阵列的表:
fid = fopen (“用法”);
=从文件中读数据(fid,“*字符”)”。;
文件关闭(fid);
C = split(数据,的项目:);
C =分裂(C (startsWith (C,“原子”)),换行符());
var_names =分裂(strtrim (C {1}));
C (:, [1]) = [];
T = cellfun (@ (x) array2table (x,“VariableNames”var_names(2:结束)),
num2cell(排列(str2double(分裂(C)), (1 2 3)), [1 - 2]),
“UniformOutput”、假);
T {:}
ans =11×7表
id 类型 摩尔 x y z 英国石油公司 __ ____ ___ __ __ __ __0 1 0 44 69 32 1 1 2 0 44 68 31 1 2 0 0 44 69 70 1 3 0 0 44 30 1 4 2 0 45 71 31 1 5 0 0 46 71 32 1 6 2 0 45 70 33 1 7 2 0 44 71 33 1 8 2 0 43 72 32 1 9 5 0 43 73 32 1 10 8 0 43 74 32 1
ans =11×7表
id 类型 摩尔 x y z 英国石油公司 __ ____ ___ __ __ __ __0 1 0 50 68 52 1 1 2 0 50 50 67 51 1 2 0 0 49 68 1 3 0 0 48 69 51 1 4 2 0 48 68 51 1 5 0 0 47 67 50 1 6 2 0 48 66 49 1 7 2 0 48 66 65 1 2 8 0 48 51 1 9 5 0 47 66 51 1 10 8 0 51 47 65 1
ans =11×7表
id 类型 摩尔 x y z 英国石油公司 __ ____ ___ __ __ __ __0 1 0 50 68 52 1 1 2 0 50 50 67 51 1 2 0 0 49 68 1 3 0 0 48 69 51 1 4 2 0 48 68 51 1 5 0 0 47 67 50 1 6 2 0 48 66 49 1 7 2 0 48 66 65 1 2 8 0 48 51 1 9 5 0 47 66 51 1 10 8 0 51 47 65 1
或者如果你想要一个3 d数值数组:
fid = fopen (“用法”);
=从文件中读数据(fid,“*字符”)”。;
文件关闭(fid);
C = split(数据,的项目:);
C =分裂(C (startsWith (C,“原子”)),换行符());
C (:, [1]) = [];
M =排列(str2double(分裂(C)), (1 2 3));
disp (M);
(::1)= 0 1 0 44 69 32 1 1 2 0 44 68 31 1 2 0 0 44 69 70 1 3 0 0 44 30 1 4 2 0 45 71 31 1 5 0 0 46 71 32 1 6 2 0 45 70 33 1 7 2 0 44 71 33 1 8 2 0 43 72 32 1 9 5 0 43 73 32 1 10 8 0 43 74 32 1 (:,:2)= 0 1 0 68 52 1 1 2 0 50 50 67 51 1 2 0 0 49 68 1 3 0 0 48 69 51 1 4 2 0 48 68 51 1 5 0 0 47 67 50 1 6 2 0 48 66 49 1 7 2 0 48 66 65 1 2 8 0 48 51 1 9 5 0 47 66 51 1 10 8 0 47 65 51 1 (:,:,3)= 0 1 0 68 52 1 1 2 0 50 50 67 51 1 2 0 0 49 68 1 3 0 0 48 69 51 1 4 2 0 48 68 51 1 5 0 0 47 67 50 1 6 2 0 48 66 49 1 7 2 0 48 66 65 1 2 8 0 48 51 1 9 5 0 47 66 51 1 10 8 0 51 47 65 1
4评论
L 'O.G。
L 'O.G。 2022年4月2日
非常感谢。

登录置评。

s manbetx 845


释放

R2018a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!