2016-04-09 7 views
-6

ben Idle içinde, bu kod parçası ile geldi:python hiçbiri bulunmayan hataları buluyor mu? Heaviside fonksiyonu ile fonksiyonunun taslağını ederken

import numpy as np 
import matplotlib.pyplot as plt 

n_i = [-5, 5] 
n = np.linspace(n_i[0], n_i[1], 1E3) 

u1 [n+30>=0] = 1 
u2 [n-15>=0] =1 
u3 = u1 - u2 

x = np.sin(2*np.pi*(n/15))*u3 

plt.axis([-30,15,-5,5]) 


plt.xlabel('$n$',fontsize=20) 
plt.ylabel('$x(n)$',fontsize=20) 
plt.stem(n, x, "--k", linefmt='black', basefmt='black') 
plt.grid() 
plt.show() 

ve bugün önce, o, ben uğraşıyorum benim parsellerin diğer tüm ile aynı, hatasız çalıştı python ile iki yıl boyunca ve sınıflar boyunca, öğretmenlerin bile onları görmediği hataları bulma alışkanlığı vardı. Burada bir şey eksik miyim? "u1 tanımlı değil" diyor, ama öyle. Çalışanlar ve sınıf arkadaşları ile bile karşılaştırdım, arsa kodunda başka bir şekilde görmedim. yardım et!

+1

tanımlanmamış ... 'u1 =' veya 'import u1' hiçbir yerde yoktur ... –

+3

Hayır,' u1' tanımlı değil. İkisi de değil. –

cevap

1
u1 oluşturmadan bile bir değer atamayı deneyin.

Öğelerini yerleştirmeye çalışmadan önce u1 başlatmanız gerekir.

+0

Yani bana "my_array = array (u1, [n + 30> = 0])" koşuluna ihtiyacım var mı? ama sonra heaviside fonksiyon kısıtlama, yok u (n) = 1 t> = 0 ve u (n) = 0 ise t <0, yok? – TwistedMaze

+0

@TwistedMaze: 'u1' adını atayan bir şeye ihtiyacınız var. Python kodunuzda böyle bir isim yok. Kodunuzun ne elde etmesi gerektiği hakkında hiçbir fikrim yok. 'my_array = array (u1, [n + 30> = 0])' 'u1 '' e hiçbir şey atamadı,' my_array' ismine atar, ancak 'u1' tanımlı olmadığı için ifade başarısız olur . –

+0

@TwistedMaze Hayır, sadece "u1" inizi beyan etmelisiniz. Örneğin, bir sözlük olarak (ya da istediğiniz başka bir şeye göre): 'u1 = {}'. Ve * sadece o zaman *, ona elemanlar ekleyerek. – vmonteco