Python 이미지 처리 의 직선 과 곡선의 적합 과 그리 기[curvefit()응용]
데이터 처리 와 그림 그리 기 에서 우 리 는 보통 직선 이나 곡선의 적합 문 제 를 만 날 수 있 습 니 다.python 에서 scipy 모듈 의 서브 모듈 optimize 에서 곡선 적합 에 전문 적 으로 사용 되 는 함수
curve_fit()
를 제공 합 니 다.다음은 예 시 를 통 해 직선 과 곡선의 의합 과 그리 기 를 어떻게 사용 하 는 지 설명 한다.
코드 는 다음 과 같 습 니 다:
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
#
def f_1(x, A, B):
return A*x + B
#
def f_2(x, A, B, C):
return A*x*x + B*x + C
#
def f_3(x, A, B, C, D):
return A*x*x*x + B*x*x + C*x + D
def plot_test():
plt.figure()
#
x0 = [1, 2, 3, 4, 5]
y0 = [1, 3, 8, 18, 36]
#
plt.scatter(x0[:], y0[:], 25, "red")
#
A1, B1 = optimize.curve_fit(f_1, x0, y0)[0]
x1 = np.arange(0, 6, 0.01)
y1 = A1*x1 + B1
plt.plot(x1, y1, "blue")
#
A2, B2, C2 = optimize.curve_fit(f_2, x0, y0)[0]
x2 = np.arange(0, 6, 0.01)
y2 = A2*x2*x2 + B2*x2 + C2
plt.plot(x2, y2, "green")
#
A3, B3, C3, D3= optimize.curve_fit(f_3, x0, y0)[0]
x3 = np.arange(0, 6, 0.01)
y3 = A3*x3*x3*x3 + B3*x3*x3 + C3*x3 + D3
plt.plot(x3, y3, "purple")
plt.title("www.jb51.net test")
plt.xlabel('x')
plt.ylabel('y')
plt.show()
return
plot_test()
의합 과 그리 기 해 과 는 다음 과 같다.물론
curve_fit()
함 수 는 직선,2 차 곡선,3 차 곡선 의 적합 과 그리 기 에 사용 할 수 있 을 뿐만 아니 라 코드 중의 형식 을 모방 하여 임의의 형식의 곡선 의 적합 과 그리 기 에 적용 할 수 있 으 며 적당 한 곡선 방정식 만 정의 하면 된다.예 를 들 어 가우스 곡선 적합,곡선 함수 형식 은 다음 과 같다.
def f_gauss(x, A, B, C, sigma):
return A*np.exp(-(x-B)**2/(2*sigma**2)) + C
PS:여기 서 비슷 한 온라인 도구 두 가 지 를 추천 합 니 다.참고 하 시기 바 랍 니 다.온라인 다항식 곡선 및 곡선 함수 적합 도구:
http://tools.jb51.net/jisuanqi/create_fun
온라인 으로 다항식/함수 곡선 도형 그리 기 도구:
http://tools.jb51.net/jisuanqi/fun_draw
더 많은 파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.