의외로 별로 안 어려워서.
사칙연산, 조건문, 반복문, 출력, 함수사용, 모듈사용까지 하루만에 다 끝냈다.
이제 GUI만 배우면 끝.

#
# Numerical 2D Gaussian Function generator
# Copyright : KeeHwan Nam, 2011,
# Advanced Photonics Research Institute, Gwang-ju Institute of Science and Technology
#
# E-mail : snowall@gmail.com
#
# Please send me what you found bugs.

import math # math 모듈을 불러온다
print("Numerical 2D Gaussian Function generator with Python3") #프로그램에 대한 기본적인 정보를 출력한다
print("Copyright : KeeHwan Nam, 2011. v1.0")
print("E-mail : snowall@gmail.com")

w = int(input("Input X(width) pixels = ")) #input으로부터 값을 읽어서,
h = int(input("Input Y(height) pixels = "))#용도에 맞게 float과 int로 바꿔서 각 변수에 넣는다.
izero = float(input("Input I_zero  = "))
xfwhm=float(input("Input sigma_x variable = "))
yfwhm=float(input("Input sigma_y variable = "))
print("Check gaussian.csv")

def gaussian(i, j): #gaussian 함수를 정의한다.
    x = (w/2.0 - float(i))/xfwhm #매개변수로 받은 두 수를 일단 float으로 바꾸고
    y = (h/2.0 - float(j))/yfwhm #정규분포 함수에 넣어서
    z = izero*math.exp(-x*x-y*y) # 크기를 바꾸고
    return z #값을 되돌려준다

fp = open("gaussian.csv", "w") #파일을 만든다
for j in range(0, h, 1): #반복구문을 돌린다. range는 0부터 h까지 1씩 증가하는 리스트를 만들어 주는 함수이다.
    fp.write("{0:.3f}".format(gaussian(0, j))) #fp를 열었으니 거기에 쓰기로 했다. 이번엔 거꾸로 float을 int로 바꿔야 한다
    for i in range(1, w, 1):
        fp.write(",{0:.3f}".format(gaussian(i, j))) #format구문은 정수부분은 전부, 소수부분은 3자리까지만 출력하기 위해 사용한다.
    fp.write("\n")

fp.close() #다 썼으면 파일을 닫는다.
#프로그램 끝.


by snowall 2011. 3. 19. 02:41