2017-04-12 5 views
1

Ich möchte eine Funktion zeichnen y [n] = x [n + 2]. Mein Problem ist, dass es nicht im richtigen Bereich plottet oder nicht einmal die Null-Sample-Punkte zeichnet.Wie zeichnet man ein diskretes Signal in Matlab?

enter image description here

enter image description here

n = 1:6; 
x = 1:1:8; 

f = figure; 
subplot(1,2,1)  
stem(n, x(n)); 
axis([-3,8, 0, 7]); 
xlabel('n'); 
ylabel('x[n]'); 
title('Subplot 1') 

subplot(1,2,2)  
stem(n, x(n + 2));  
xlabel('n'); 
ylabel('y[n]'); 
title('Subplot 2') 

Wie die Variablen n oder x zu ändern, um die richtige Handlung zu bekommen? Am Ende sollte es so aussehen:

enter image description here

+0

anwenden Was ist falsch daran? Es sieht genau so aus wie die Funktion y = x (n + 2) – Suever

+0

@Suever Ich habe die Frage bearbeitet. x [n] ist von 0 bis 6 begrenzt – j35t3r

Antwort

1

Sie das Konzept der Indizes mit der abhängigen Variablen verwirrend. Sie sollten eine Funktion x konstruieren, die eine Eingabe n unter Verwendung der Beziehung transformiert, dass Sie wissen

function y = x(n) 
    % Set all outputs to 0 
    y = zeros(size(n)); 

    % Replace the values that fall between 0 and 6 with their same value 
    y(n >= 0 & n <= 6) = n(n >= 0 & n <= 6); 
end 

Dann sollten Sie diese Funktion eine Reihe von n Werte passieren zu bewerten.

nvalues = -3:8; 
yvalues = x(nvalues); 

stem(nvalues, yvalues) 

Sie können auch eine Transformation auf die n Werte

nvalues = -3:8; 
yvalues = x(nvalues + 2); 

stem(nvalues, yvalues) 
+0

Ich bekomme diesen Fehler: In einer Zuweisung A (I) = B muss die Anzahl der Elemente in B und I gleich sein. Fehler in x (Zeile 6) y (n> = 0 & n <= 6) = n; – j35t3r

+0

@ j35t3r Aktualisiert – Suever

+0

vielen Dank für Ihre Bemühungen – j35t3r

Verwandte Themen