【发布时间】:2019-10-18 00:54:30
【问题描述】:
我已经搜索了一些从分子数据库中加载 xyz 文件(带有数字的表格)的方法,但无法让代码按照我的意愿完美运行。
如果比较矩阵 =0 打开所有文件,如果它的大小为 1,1 但与 0 不同,则将所有文件与compare 中的文件进行比较,最后如果大小>1,1,则文件为指定并且有效。
文件也用数字命名,如果不重命名就可以打开它们就好了。
如果我记得我的 matlab 是 2016 年,我不经常编码,这就是为什么我会弄乱语法并想让它在长期比较时轻松工作。如果有人知道如何打开 xyz 文件的在线数据库,那就更好了。
cd input
compare=['a2';'s4'];
cd ..
NumMols=size(compare);
if compare = 0
compare = dir;
compare = compare(~[compare.isdir]);
NumMols=size(compare);
else if size(compare)=(1,1)
FileNrOne=compare
compare = dir;
compare = compare(~[compare.isdir]);
compare = compare(~[FileNrOne]);
NumMols=size(compare)+1;
end
for k=1:NumMols
cd input
mol = dlmread(compare(k),'\t');
cd ..
end
编辑1: 我正在添加我使用的代码,因为一条评论要求我提供一些我已经运行和工作的代码。我还需要重命名文件,使文件名中没有数字。
cd input
compare=['a';'s'];
cd ..
NumMols=size(compare);
for k=1:NumMols
cd input
mol = dlmread(compare(k),'\t');
cd ..
%some comparisons
end
%more comparisons
【问题讨论】:
-
if size(compare)=(1,1)这是无效语法 -
如果你要发布代码,至少要先运行它以确保它是正确的。生锈不是语法错误的借口。
-
@CrisLuengo 我已经添加了工作代码,我承认我没有测试像“=”这样的问题,但请告诉我在哪里可以找到其他问题的解决方案。工作代码对我来说已经足够好了,但其他人可能无法使用它,因为它的用途可能超出我的预期。使其更加自动化将鼓励其他人将其用于更好的事情。
-
您能解释一下您希望
compare=['a';'s']做什么以及您认为NumMols的价值来自哪里吗? -
@nekomatic
compare具有我将比较的分子的文件名,NumMols是迭代需要遍历所有这些分子的文件数
标签: matlab