Problem mit Matlab

Gast #808382
Lesenswert?

Hallo,

ich hab da ein Signal x(k) das ich zuerst in eine geschlossene 
Darstellung
gebracht habe: x(k)= 2*h(k-1)-2*h(k-2)+2*h(k-3) --> x(k) --> X(z)
Im Anschluss daran habe ich dieses Signal mit der Übertragungsfunktion 
G(z) multipliziert. Somit erhalte ich dann das Ausgangssignal Y(z).
Dieses Y(z) wandelt man dann in y(k) um. Wie kann man mit Matlab solch 
eine Aufgabe lösen? Wie kann man in Matlab das x(k) bzw. y(k) grafisch 
darstellen?
Angehängte Dateien:
Gast #809585
Lesenswert?

vorausgesetzt du hast dein h(k) schon, dann kannst du einfach in einer 
Schleife dein x(k) erzeugen und dann plotten... sonst musst du natürlich 
erst noch das h(k) erzeugen

for k = 6:ENDWERT+6
  x(k-5)= 2*h(k-1)-2*h(k-2)+2*h(k-3)+2*(1/2)^(k-5)*h(k-5);
end

figure(1);
plot(x);

Die Hilfe von MATLAB ist aber auch sehr gut! Einfach mal reinschauen...
Gast #809595
Lesenswert?

du musst dann noch die länge von h(k) anpassen, entweder nullen hinten 
anhängen, oder wenn du die Schleife von 1 an durchlaufen willst, dann 
Nullen vorne vorsetzen...
Ist immer ein bisschen gebastel mit den Indizes.
Mit "whos" im MATLAB-Fenster kannst du dir die Länge der Variablen 
anzeigen lassen. Seht hilfreich!

h=[h zeros(1,6)];
Gast #809657
Lesenswert?

Ich hab da kene Ahnung wie so ein Sprung erzeugen könnte.
Es soll ja so sein, dass wenn der Sprung h(k-1) kommt, dass bei k=1 ein 
Sprung auf 1 erzeugt wird. Wie man dies in Matlab  allgemeingültig 
hinbekommt, das weiss ich nicht.
Gast #809684
Lesenswert?

Ich hab mal in Matlab das ganze versucht. Nun ist es so das der Sprung 
bis jetzt nur bei k=1 auf 1 springt. Wie könnte man in Matlab dies 
allgemeingültig hinbekommen? Beispiel: h(k-7): Sprung bei k=7

function [x] = h(k)

if(k==1)
    x=1;
else
    x=0;
end
Gast #809697
Lesenswert?

Ich verstehe deine Frage noch nicht so ganz...
Wie soll denn dein Signal h(k) aussehen? Wie lang soll es sein? Wieviele 
Sprünge?
Da es sich um ein diskretes Signal handelt, brauchst du für einen Sprung 
auf 1 nur eine 1 in den Vektor schreiben.
Der Vektorindex fängt aber immer bei 1 an und darf nicht 0 werden!

Bsp.

h=[ 0 0 0 1 1 0 0 0 0 0];

dann hast du bei h(4) einen Sprung auf 1... h(5) ist auch 1 der Rest ist 
Null...
Gast #809707
Lesenswert?

Beispiel:

x(k)= 2*h(k-1)-2*h(k-5)

Bei k=1 soll der Sprung auf 1 gehen und bei k=5 soll dieser Sprung 
wieder auf 0 gehen.  Dies bedeutet dass bei k=2 und k=3 und k=4 der 
Sprung auf 1 ja bleiben soll. Erst bei k=5 soll der Sprung wieder auf 0 
gehen und da auch bleiben.
Gast #809715
Lesenswert?

Sprung Funktion:

function [x] = h(k,m)
if(k==m | k>m)
    x=1;
else
    x=0;
end


Matlab Programm:

x=[0,0,0,0,0,0,0,0,0,0];
for k = 1:8
  x(k)= 2*h(k,1)-2*h(k,5)
end

figure(1);
plot(x);

Was mir da noch nicht so gefällt ist, dass der Sprung bei k=5 nicht 
gleich auf Null springt. Wie könnte man dies in Matlab lösen?
Angehängte Dateien:
Gast #809716
Lesenswert?

also du willst dein x(k) bauen?

hilft es dir, wenn du mit
x=zeros(1,laenge);
x =

     0     0     0     0     0     0     0     0     0     0
einen Vektor der Länge laenge mit Nullen erzeugst und du dann die 
Sprünge einfügst?

x(3)=1;
x(5:8)=1;
x =

     0     0     1     0     1     1     1     1     0     0
Gast #809727
Lesenswert?

ok, jetzt habe ich deinen Weg verstanden, so geht es auch... erscheint 
mir aber etwas umständlich. Meist sieht ein Algorithmus auf dem Papier 
anders aus als die MATLAB-Implementation...

die Schräge kommt zustande, weil die Plotfunktion einfach nur die Werte 
geradlinig verbindet. Dein x(4) ist 1, dein x(5) ist 0, also ergibt das 
verbunden eine Schräge...
Gast #809767
Lesenswert?

Wie erreicht man das der Plot bei 0 beginnt und nicht bei 1?

Bei der Verwendung von Rampen funktioniert meine Funktion nicht.

Beispiel:
N=5;
x=zeros(1,N);

for k = 1:N
  x(k)= k*h(k,0) - k*h(k,3);
end

figure(1);
stem(x);
grid on;
Angehängte Dateien:
Gast #809932
Lesenswert?

y(k) = k * r(k,0,5)

Rampenfunktion:

% m1: Start der Rampe
% m2: Ende Rampe
function [x] = r(k,m1,m2)

if(k>=m1 & k<m2)
    x=k;
else
    x=m2;
end

------------------------------------------------------------------
Soweit funktioniert mal die Rampenfunktion. Nur beim abschalten 
"-k*r(k,5,10)" da klemmt es noch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren