기능의 아웃 :합격 변수와 내가 다음 할 수있는 작은 프로그램을 작성했습니다
이- 이미지
- 검사는
- 플롯 픽셀 값에 따라 이미지에서 무작위로 행을 선택을 해당 행
- 해당 행
에서 로컬 최소값의 list
을하고 내가 그래서 나는 함수로 만들려고 해요 10 열을 말하기 위해 똑같은 방법으로 프로그램을 10 번 실행하지 않고도 모든 행의 픽셀 값을 플로팅 할 수 있습니다.
코드는 다음과 같습니다
from astropy.io import fits
import matplotlib.pyplot as plt
import numpy as np
hdulist = fits.open('xbulge-w1.fits') # Open FITS file as image
w1data = hdulist[0].data
height = w1data.shape[0] # Inspect height of image
width = w1data.shape[1]
def plot_envelope(image, image_height):
index = np.random.randint(0, height/2) # Select random number in upper half
row = w1data[index] # Look at row number
local_minima = []
# Find local minimum, and add to list of minimum-valued pixels
for i in range(1, width-1):
if w1data[index][i-1] > w1data[index][i]:
if w1data[index][i+1] > w1data[index][i]:
local_minima.append(w1data[index][i])
else:
continue
return (local_minima, row, index)
plot_envelope(w1data, height)
x1 = range(width)
plt.plot(x1, row, color = 'r', linewidth = 0.5)
plt.title('Local envelope for row ' + str(index))
plt.xlabel('Position')
plt.ylabel('Pixel value')
plt.show()
내가 (함수 정의를 사용하지 않는 경우 그것은 잘 작동 즉 index
, row
및 local_minima
과 중첩 for
루프의 선언의 main
부분에있는 경우 프로그램). 표시된 함수 정의를 사용하면 NameError: name 'local_minima' is not defined
오류가 반환됩니다.
함수에서 해당 변수를 전달하고 있으므로 나머지 프로그램에서 사용할 수 없습니까?
로컬 변수와 글로벌 변수에 대한 정보가 누락 되었습니까?
어디에서'NameError'를 얻을 수 있습니까? 나는 당신이 보여주지 않은 코드의 다른 부분에 있지 않는 한, 게시 된 코드가'local_minima'에 대한'NameError'를 반환하는 것을 보지 못합니다. – SethMMorton