Wolfram mathematica &引用;(…)中的标签部件受保护;
我目前正在编写一个模块,该模块将获取一些二维函数的数据点(一个3xN矩阵),并根据这些点绘制近似等高线图(拟合函数和变量由用户提供)。 “标题”如下所示:Wolfram mathematica &引用;(…)中的标签部件受保护;,wolfram-mathematica,Wolfram Mathematica,我目前正在编写一个模块,该模块将获取一些二维函数的数据点(一个3xN矩阵),并根据这些点绘制近似等高线图(拟合函数和变量由用户提供)。 “标题”如下所示: project4[dataPoints_, functionList_, fittingVarsList_, plotArgs___] := Module[{fitFunc, functionContourPlot, dataPointsXY, pointsPlot, xList, yList}, 用法示例: project4[
project4[dataPoints_, functionList_, fittingVarsList_, plotArgs___] :=
Module[{fitFunc, functionContourPlot, dataPointsXY, pointsPlot,
xList, yList},
用法示例:
project4[data, {1, x, y, x y, x^2, y^2}, {x, y}]
(其中数据={x1,y1,f1}…)
检查参数是否有效后,我执行以下操作:
fitFunc = Fit[dataPoints, functionList, fittingVarsList];
以获得近似值。
然后我想通过这样做来获得它的曲线图:
functionContourPlot = ContourPlot[fitFunc, {fittingVarsList[[1]], xMin, xMax},{fittingVarsList[[2]],yMin, yMax};
这会导致错误:
ContourPlot::write:{x,y}[[1]]中的标记部分受保护。显示::gcomb:
“无法在中组合图形对象。”
显示[ContourPlot[fitFunc$2187,{x,y}[[1]],xMin,xMax},{x,y}[[2]],yMin,yMax}],”
我做错了什么?问题是
轮廓图
具有属性HoldAll
,这会阻止零件
评估
Attributes@ContourPlot
你可以这样修理它
data = {{6, 4, 7.92}, {6, 5, 9.31}, {6, 6, 9.74},
{7, 4, 11.24}, {7, 5, 12.09}, {7, 6, 12.62},
{8, 4, 14.31}, {8, 5, 14.58}, {8, 6, 16.16}};
fittingVarsList = {x, y};
{xMin, xMax} = Through[{Min, Max}@data[[All, 1]]];
{yMin, yMax} = Through[{Min, Max}@data[[All, 2]]];
fitFunc = Fit[data, {1, x, y}, {x, y}]
这再现了问题:-
functionContourPlot = ContourPlot[fitFunc,
{fittingVarsList[[1]], xMin, xMax},
{fittingVarsList[[2]], yMin, yMax}];
使用和创建局部变量可以解决此问题:-
functionContourPlot =
With[{a = fittingVarsList[[1]], b = fittingVarsList[[2]]},
ContourPlot[fitFunc, {a, xMin, xMax}, {b, yMin, yMax}]]
如果从ContourPlot
的属性中删除HoldAll
,则第一个版本可以工作
Unprotect@ContourPlot;
ClearAttributes[ContourPlot, HoldAll]
…但那将是鲁莽的编程。你文章的标题应该是一个问题。