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?
Gibt es in Matlab keine Möglichkeit das diskrete Zeitsignal z.B. x(k)= 2*h(k-1)-2*h(k-2)+2*h(k-3)+2*(1/2)^(k-5)*h(k-5) grafisch zu plotten?
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...
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)];
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.
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
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...
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.
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?
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
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...
Ich tue mit der Funktion "stem" das ganze grafisch darstellen. Das ist besser. Danke für die Hilfe.
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;
Der Plot kann meines Wissens nicht bei Null anfangen, da der Index Null nicht existiert. Bei meinen Simulationen fällt das aber kaum auf... (>90000 Samples)
x(k)= k*h(k,0) - k*h(k,3); In diesem Beispiel beginnt die Rampe bei k=0. Bei k=3 geht die Rampe wieder nach unten. Das in Matlab zu programmieren bereitet mir probleme.
Ich weiß, das ist nicht so, wie du es haben willst, aber vielleicht hilft es beim Basteln: x1=0:1/10:1; x2=ones(1,10); x3=1:-1/10:0; x=[x1 x2 x3];
Plot der bei null anfängt: >> x= 1:10; >> t=0:length(x); >> t=0:length(x)-1; >> plot(t,x)
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.
Kann mir da jemand noch einen Rat geben, wie man so eine Rampenfunktion in Matlab programmiert?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.