我正在尝试编辑一个当前的Mathematica脚本,以允许批处理。这涉及到导入一系列不同名称的文件(即不同的数字后缀),最后编写不同的.dat用于导出结果。为此,我尝试实现了一个Do循环(在下面的示例代码中,它是为带有980和998后缀的文件设置的),但不知何故,Mathematica无法识别Do循环变量。有人能帮上忙吗?或者提出一种解决这个问题的方法?谢谢!
Do[
prot=Import[StringForm["dMdt_protein_nve``.dat", i],"Table"];
ions=Import[StringForm["dMdt_ions_nve``.dat", i],"Table"];
water=Import[StringForm["dMdt_water_nve``.dat", i],"Table"];
(* ------------------------------------------------------ *)
(*parameters for spectrum calculation*)
times=Range[0,(nCorr*2-2)*dt,dt]; (*in picoseconds*)
f0=1/(Length[times]*dt); (*in THz*)
freqs=Table[i*f0,{i,0,Length[times]-1}];
wn=freqs*0.01*10^12/c;
prefactor=(2\[Pi] *(e*10^-10*10^12)^2*dt*10^-12*0.01)/(4\[Pi] Epsilon0*kb*300*3*(13.29315*10^-9)^3 c); (*to yield alpha(\[Omega]) \[Times] n(\[Omega]) in 1/cm*)
(* ------------------------------------------------------ *)
(*smart calculation with Fourier transforms for the correlations*)
(*auto-correlations via FT*)
protAC=FTAC[prot,nCorr];
ionsAC=FTAC[ions,nCorr];
waterAC=FTAC[water,nCorr];
(* ------------------------------------------------------ *)
(*(*Save data to file*)*)
Export[StringForm["out_protCCwaterSpec_nve``.dat", i],protCCwaterSpec+waterCCprotSpec "Table"];
,{i,{980,998}}] 发布于 2021-01-19 02:54:23
问题是StringForm不是String。请改用StringJoin。确保它正常工作,然后添加剩下的代码。
Do[
Import["dMdt_protein_nve" <> ToString@i <> ".dat", "Table"],
{i, {980, 998}}]https://stackoverflow.com/questions/65779020
复制相似问题