2016-04-09 99 views
-6

而繪製與Heaviside函數功能,我想出了這樣一段代碼,在空閒:沒有python發現錯誤嗎?

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() 

和之前的今天,其運行沒有任何錯誤,同樣與所有其他我陰謀,我一直在處理現在,python已經有兩年了,在整個課程中,它有習慣於發現錯誤的習慣,即使老師也看不到它們。我在這裏錯過了什麼嗎?它說「u1沒有定義」,但它是。我甚至與同事和同班同學相比,在劇情的編碼中沒有看到任何其他方式。幫幫我!

+1

其未定義......任何地方都沒有'u1 ='或'import u1' ... –

+3

不,u1沒有定義。 'u2'也不是。 –

回答

1

您嘗試將值分配給u1[...],甚至沒有創建u1

在嘗試初始化其元素之前,您應該初始化u1

+0

所以你告訴我我需要「my_array = array(u1,[n + 30> = 0])」條件? ,但它缺乏heaviside函數限制,其中如果t> = 0,則u(n)= 1,如果t <0,則u(n)= 0,否則, – TwistedMaze

+0

@TwistedMaze:你需要一些分配名稱'u1'的東西。在您的Python代碼中沒有定義這樣的名稱。我不知道你的代碼應該實現什麼。 'my_array = array(u1,[n + 30> = 0])'不會給u1分配任何東西,它會分配給my_array這個名字,但是表達式會失敗,因爲你沒有定義u1 。 –

+0

@TwistedMaze不,你應該聲明你的'u1'。例如作爲一個詞典(或其他東西,取決於你想要的):'u1 = {}'。 *只有*然後添加元素。 – vmonteco