2013-06-25 2 views
2

현재 2 차원 함수 (3 x N 행렬)의 데이터 요소를 취하여 그 점을 기반으로 한 근사의 등고선 그래프를 그려야하는 모듈을 작성하고 있습니다 (피팅을위한 기능 및 변수는 사용자가 제공함). 확인 후"태그 부분 (...)이 보호되어 있습니다"

({... {X1, Y1, F1}} = 데이터)

project4[data, {1, x, y, x y, x^2, y^2}, {x, y}] 

: 사용량

project4[dataPoints_, functionList_, fittingVarsList_, plotArgs___] := 
Module[{fitFunc, functionContourPlot, dataPointsXY, pointsPlot, 
    xList, yList}, 

예 : 은 "헤더"는 다음과 같다 인수가 유효한 경우 다음을 수행합니다.

fitFunc = Fit[dataPoints, functionList, fittingVarsList]; 

대략적인 내용은 다음과 같습니다. 은 그럼 내가 수행하여 그것의 플롯을 가져올 : 오류로 연결

functionContourPlot = ContourPlot[fitFunc, {fittingVarsList[[1]], xMin, xMax},{fittingVarsList[[2]],yMin, yMax}; 

가 :

ContourPlot : 쓰기 : {X, Y}에서 태그 부분은 [[1]]입니다 보호. 표시 :: gcomb : "그래픽 개체를 결합 할 수 없습니다 표시 [ContourPlot [fitFunc $ 2187, {{x, y} [[1]], xMin, xMax}, {{x, y} [[2]] , yMin, yMax}], "

내가 뭘 잘못하고 있니?

+0

게시물의 제목은 질문이어야합니다. –

답변

2

HoldAll이있는 ContourPlotPart을 평가하지 못하게합니다.

[email protected] 

enter image description here

당신은이 같이 해결할 수 있습니다.

enter image description here

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}]; 

enter image description here

문제는 로컬 변수를 생성하는 With를 사용하여 고정 될 수있다 : -

functionContourPlot = 
With[{a = fittingVarsList[[1]], b = fittingVarsList[[2]]}, 
    ContourPlot[fitFunc, {a, xMin, xMax}, {b, yMin, yMax}]] 
,536,913,632

enter image description here

첫 번째 버전은 작동 ContourPlot의 속성에서 HoldAll를 제거하면 10 ...

[email protected]; 
ClearAttributes[ContourPlot, HoldAll] 

...하지만 무모한 프로그램이 될 것입니다.

+1

당신은 나의 구세주입니다. – user2521472

관련 문제