我在一个名为ImageJ的免费软件中分析gafchromic过滤器,它使用简化形式的Java来编写宏。
我有一组数据点,我已成功连接不同的方法,并确定三度多项式最适合数据,但我需要使用实际曲线,所以我需要以某种方式提取方程式/公式多项式。这应该是可能的,因为定义多项式的变量列在生成的图形上,但是我似乎找不到在代码中提取它们的方法。
到目前为止,这是我的代码:
n = nResults();
x = newArray(n);
for (i=0; i<x.length; i++)
{
x[i] = getResult("Grays ", i);
}
y = newArray(n);
for (i=0; i<y.length; i++)
{
y[i] = getResult("Mean ", i);
}
// Do all possible fits, plot them and add the plots to a stack
setBatchMode(true);
for (i = 0; i < Fit.nEquations; i++) {
Fit.doFit(i, x, y);
Fit.plot();
if (i == 0)
stack = getImageID;
else {
run("Copy");
close();
selectImage(stack);
run("Add Slice");
run("Paste");
}
Fit.getEquation(i, name, formula);
print(""); print(name+ " ["+formula+"]");
print(" R^2="+d2s(Fit.rSquared,3));
for (j=0; j<Fit.nParams; j++)
print(" p["+j+"]="+d2s(Fit.p(j),6));
}
setBatchMode(false);
run("Select None");
rename("Curve Fits");
}
答案 0 :(得分:0)
如上所述,我已经在其他地方找到了答案。尽管如此,我还想把它留在这里备案。 基本上,答案已经包含在原始帖子中,因为它将各个变量打印到“日志”窗口中。
对于三次多项式,我本来可以使用:
Fit.doFit(2, x, y); // 2 is 3rd Degree Polynomial
Fit.plot();
rename("Calibrating curve");
然后可以很容易地提取出来:
a = Fit.p(0);
b = Fit.p(1);
c = Fit.p(2);
d = Fit.p(3);