2016-04-09 10 views
-6

während Funktionen mit heaviside Funktion Plotten kam ich mit diesem Stück Code, im Standby-up:findet Python Fehler wo keine sind?

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

und vor heute lief es ohne Fehler, das gleiche mit allen anderen meiner Plots, ich habe zu tun Mit Python seit zwei Jahren und während Klassen hat es die Angewohnheit Fehler zu finden, wo sogar Lehrer sie nicht sehen. Fehle ich hier etwas? es heißt "u1 ist nicht definiert", aber es ist. Ich habe mich sogar mit Kollegen und Klassenkameraden verglichen, habe es im Code für die Handlung nicht anders dargestellt. Hilfe!

+1

es ist nicht definiert ... es gibt kein 'u1 =' oder 'import u1' irgendwo ... –

+3

Nein,' u1' ist nicht definiert. Weder ist 'u2'. –

Antwort

1

Sie versuchen, u1[...] einen Wert zuzuweisen, ohne u1 erstellt zu haben.

Sie sollten init u1 initiieren, bevor Sie versuchen, seine Elemente zu initialisieren.

+0

also sagen Sie mir, ich brauche die Bedingung "my_array = array (u1, [n + 30> = 0])"? aber dann fehlt die Funktionseinschränkung, in der u (n) = 1 wenn t> = 0 und u (n) = 0 wenn t <0, nein? – TwistedMaze

+0

@TwistedMaze: Sie benötigen etwas, das den Namen 'u1' zuweist. In Ihrem Python-Code ist kein solcher Name definiert. Ich habe keine Ahnung, was dein Code erreichen soll. 'my_array = array (u1, [n + 30> = 0])' würde 'u1' nichts zuweisen, es würde dem Namen 'my_array' zugewiesen, aber der Ausdruck wird fehlschlagen, da du kein' u1' definiert hast . –

+0

@TwistedMaze Nein, Sie sollten einfach Ihre 'u1' deklarieren. Zum Beispiel als Dictionary (oder etwas anderes, je nachdem, was Sie wollen): 'u1 = {}'. Und * nur dann *, indem Elemente hinzugefügt werden. – vmonteco