2017-01-26 4 views
0

Ich verwende den folgenden Code, um eine standardmäßige diskrete Einheitsschrittfunktion in MATLAB zu erstellen.diskrete Schrittfunktion in Matlab erstellen

>> n = -5 : 5; 
>> y = heaviside(n); 
>> stem(n,y); 

Doch diese druckt enter image description here Ich habe versucht, viele verschiedene Variationen und versuchte, mit dem Code durcheinander. aber ich kann die Funktion nicht erstellen. Am liebsten hätte ich die Funktion in einer einzigen Variablen, um eine kompliziertere Signalverarbeitung durchführen zu können. Irgendwelche Ideen, was ich falsch mache?

Antwort

1

Dies ist die Definition der Heaveside-Schrittfunktion aus der Matlab-Dokumentation.

Heaviside (x) den Wert 0 für x < 0, 1 für x> 0 ist, und 1/2 für x = 0.

Hinweis das Ergebnis dieses Integrals zu sehen, dass die Implementierung korrekt ist:

syms x 
int(exp(-x)*heaviside(x), x, -Inf, Inf) 
+0

hmm, also kann ich das Ergebnis des Integrals in komplizierteren Gleichungen verwenden? –

+0

natürlich können Sie auch komplexere Ausdrücke von Symbolen als Argument für 'hisiside' verwenden – OregonTrail

+0

Vielen Dank für Ihre Hilfe! –

0

anzumerken, dass in der symbolischen heaviside Bibliothek definiert wird, wird sie meist für die kontinuierliche Berechnungen wie symbolische Integrationen verwendet, Fourier-Transformationen und dergleichen. Sie können es auch in einer separaten Einstellung verwenden, aber ob das Verhalten für x=0 das ist, was Sie benötigen, hängt von der Anwendung ab.

Einfachere Möglichkeiten, um eine Stufenfunktion (ohne Toolbox) zu erzeugen, sind:

step1 = @(x) x>=0; 
step2 = @(x) (sign(x)+1)/2; 

figure(1);clf; 
stem(-5:5,step1(-5:5)); 
hold on; 
stem(-5:5,step2(-5:5),'rx'); 

während die ersten Sprünge von 0 auf 1 bei x=0 und die zweite tut es heaviside ähnlich.