循环到 运行 批量分析.dat
Do loop to run batch analysis of .dat
我正在尝试编辑当前的 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}}]
问题是 StringForm
不是 String
。请改用 StringJoin
。确保这有效,然后添加其余代码。
Do[
Import["dMdt_protein_nve" <> ToString@i <> ".dat", "Table"],
{i, {980, 998}}]
我正在尝试编辑当前的 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}}]
问题是 StringForm
不是 String
。请改用 StringJoin
。确保这有效,然后添加其余代码。
Do[
Import["dMdt_protein_nve" <> ToString@i <> ".dat", "Table"],
{i, {980, 998}}]