2013-10-17 2 views
2

2 차 방정식에 대한 근사 그래프 (곡선 피팅)를 시도하고 있습니다. 나는 x와 y 열을 포함하는 4 개의 데이터 파일을 가지고 있습니다. 나는 계수를 결정하고 각 계수 파일에 대한 각 계수 파일을 씁니다.Gnuplot을 사용한 근사 그래프/곡선 피팅

clk0_h clk0_h_c clk0_s clk0_s_c clk1_h clk1_h_c clk1_s clk1_s_c 
c coefficient File (As of now I determie manually for generate Graph in python) 

내가 가진 그래프는 다음과 같습니다 enter image description here

의 gnuplot 코드는 다음과 같습니다 나는 각 행의 그래프를 근사하려고

set title "Approximation Graph" 
set term png 
set output 'plot.png' 
f(x) = a*x*x + b*x + c 
fit f(x) 'clk0_h' via 'clk0_h_c' 
fit f(x) 'clk1_h' via 'clk1_h_c' 
fit f(x) 'clk0_s' via 'clk0_s_c' 
fit f(x) 'clk1_s' via 'clk1_s_c' 
plot "clk0_h" using 1:2 with lines, f(x), "clk1_h" using 1:2 with lines, f(x), "clk0_s" using 1:2 with lines, f(x), "clk1_s" using 1:2 with lines, f(x) 

. 하지만 마치 겹쳐 썼습니다. gnuplot을 사용하여 다음 그래프를 작성해야합니다. 알고 있습니다. 원본 그래프와 매우 다릅니다. 하지만 알 수 있습니까? gnuplot을 사용하여 분산 형 그래프를 만들 수 있습니다.

아래의 그래프에서 대시 선은 근사값을 나타냅니다 (표본은 두 가지로만 나타냅니다). 그러나 작업 그래프에서 우리는 네 개의 근사값 선이 필요합니다.

enter image description here

나는 오늘의 gnuplot을 시도하고 또한 그래프를 작성해야합니다.

답변

1

항상 계수 파일에 지정된 시작 값이 다른 동일한 함수 f(x)을 사용하십시오. 네 가지 기능을 가지고하기 위해, 당신은 또한 그 네 가지 함수를 정의해야합니다

f0_h(x) = a0_h * x**2 + b0_h * x + c0_h 
fit f0_h(x) 'clk0_h' via 'clk0_h_c' 

f1_h(x) = a1_h * x**2 + b1_h * x + c1_h 
fit f1_h(x) 'clk1_h' via 'clk1_h_c' 

f0_s(x) = a0_s * x**2 + b0_s * x + c0_s 
fit f0_s(x) 'clk0_s' via 'clk0_s_c' 

f1_s(x) = a1_s * x**2 + b1_s * x + c1_s 
fit f1_s(x) 'clk1_s' via 'clk1_s_c' 

set style data lines 
plot 'clk0_h' u 1:2, f0_h(x), \ 
    'clk1_h' u 1:2, f1_h(x), \ 
    'clk0_s' u 1:2, f0_s(x), \ 
    'clk1_s' u 1:2, f1_s(x) 

따라서, 당신의 계수 파일은 (등 a0_h를 사용하는) 다른 매개 변수 정의를 포함해야합니다.

같은 형식을 가지고 계수 파일을 유지하려면 (만 a, bc 사용), 당신은 피팅을위한 하나 개의 함수 f(x)를 사용한 다음에있는 구체적인 기능에 장착 변수를 지정할 수 있습니다 꾸몄다 :

f(x) = a * x**2 + b * x + c 
f0_h(x) = a0_h * x**2 + b0_h * x + c0_h 
f1_h(x) = a1_h * x**2 + b1_h * x + c1_h 
f0_s(x) = a0_s * x**2 + b0_s * x + c0_s 
f1_s(x) = a1_s * x**2 + b1_s * x + c1_s 

fit f0_h(x) 'clk0_h' via 'clk0_h_c' 
a0_h = a; b0_h = b; c0_h = c; 

fit f1_h(x) 'clk1_h' via 'clk1_h_c' 
a1_h = a; b1_h = b; c1_h = c; 

fit f0_s(x) 'clk0_s' via 'clk0_s_c' 
a0_s = a; b0_s = b; c0_s = c; 

fit f1_s(x) 'clk1_s' via 'clk1_s_c' 
a1_s = a; b1_s = b; c1_s = c; 

set style data lines 
plot 'clk0_h' u 1:2, f0_h(x), \ 
    'clk1_h' u 1:2, f1_h(x), \ 
    'clk0_s' u 1:2, f0_s(x), \ 
    'clk1_s' u 1:2, f1_s(x) 
+0

고맙습니다. Gnuplot.if에서 산포도 그래프를 만들 수 있습니까? 예 예 산란 그래프를 생성 할 수있는 아이디어를 줄 수 있습니까? – user765443

+0

분산 형 플롯의 가장 쉬운 가능성은'splot 'data.txt'points with points'입니다. 특별한 도움이 필요하다면 새로운 질문을하라고 제안합니다. – Christoph

+0

매우 제한된 시간을 갖고 적절한 입력을 받으면 정말 고마워요. – user765443