Maxima 将当前循环迭代添加到文件名

问题描述

我有类似于下面的代码,其中在每次迭代后绘制一个参数取决于循环迭代的函数。我想用名称 trigplot_i.ps 保存绘图,其中 i 是迭代次数,但不知道如何保存。

我已经尝试过 trigplot_"i".ps 但没有奏效,并且也无法找到如何将 i 转换为字符串。

我是初学者,所以非常欢迎任何帮助。

f(x) := sin(x);
g(x) := cos(x);
for i:1 thru 10 do
    (plot2d([i*f(x),i*g(x)],[x,-5,5],[legend,"sin(x)","cos(x)"],[xlabel,"x"],[ylabel,"y"],[ps_file,"./trigplot_i.ps"],[gnuplot_preamble,"set key Box spacing 1.3 top right"])
);

修改后的代码报错:

f(x) := sin(x);
g(x) := cos(x);
for i:1 thru 10
    do block([myfile],myfile: sconcat("./trigplot_",i,".ps"),printf (true,"iteration ~d,myfile = ~a~%",myfile),plot2d([i*f(x),myfile],"set key Box spacing 1.3 top right"])
);

错误: “声明:参数必须是一个符号;找到了”./trigplot_1.ps - 一个错误。 要调试此尝试:debugmode(true);"

解决方法

看起来不错。要构造文件名,请尝试:sconcat("./trigplot_",i,".ps") 或者您也可以尝试:printf(false,"./trigplot_~d.ps",i)。我的建议是将其作为循环中的一个单独步骤,然后您可以在对 plot2d 的调用中使用它,例如:

for i:1 thru 10
  do block ([myfile],myfile: sconcat("./trigplot_",".ps"),printf (true,"iteration ~d,myfile = ~a~%",myfile),plot2d (<stuff goes here>,[ps_file,myfile],<more stuff>));

编辑:修复了 printf 中的一个错误(省略参数 i)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...