WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

statt gewünschtem Vektor wird Nullvektor geplottet

 

Akina92
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2014, 09:42     Titel: statt gewünschtem Vektor wird Nullvektor geplottet
  Antworten mit Zitat      
Hallo alle zusammen.

Ich habe ein vermutlich triviales Problem, komme aber nicht darauf, was ich falsch mache.

Im ersten Teil meines Programmes erstelle ich mir äquidistante Punkte t über eine bestimmte Länge und Zufallswerte an diesen Stellen (Vektor v). Wenn ich dieses Plotte, stimmt noch alles.

Nun berechne ich im zweiten Teil einen neuen Vekor x durch Aneinanderreihung verschiedenster Projektionen (tut aber hier nichts zur Sache).

Will ich nun diesen auch mit in diese Grafik plotten, wird aus meinem v aber ein Nullvektor gemacht. Wenn ich v nach dem Plotten ausgebe, ist es jedoch noch das selbe wie vorher.

Egal ob

Code:
%
plot(t, v)
hold on;
plot(t, x)


oder

Code:
%
plot(t, v, t, x)


Dazwischen werden noch einige Punkte extra geplottet, nur der Vollständigkeit halber:

Code:
%
for i=1:n
    if I(i)==1
        plot(t(i), v(i), 'r*')
    end
end
 


Ich hoffe es weiß jemand, was hier das Problem ist und bedanke mich im Voraus für Eure Hilfe!!

MfG, Akina
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.04.2014, 09:45     Titel:
  Antworten mit Zitat      
hallo. da du leider nur beschreibst was du machst kann man unmöglich das problem finden ^^
bitte poste lauffähigen code der den fehler reproduziert.
der fehler ligt ja nicht im plot befehl sondern bei dem was davor passiert. und das hast du nicht mit angegeben Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Akina92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2014, 09:53     Titel:
  Antworten mit Zitat      
Sorry,

es handelt sich um ziemlich viele ineinander verschachtelte Programmme -.-

Also es gibt da eine Projektionsfunktion:
Code:


function p=PCthree(x, t, c, d, ic) % curvature constraint projector [3]
% ic==0 bedeutet normale Projektoren, ic==1, dass es sich um intrepid
% counterparts handelt)

p=x;
n=length(x);

if ic==1
    for i=3:3:n-2
        tau1=t(i+1)-t(i); % tau_i
        tau2=t(i+2)-t(i+1); % tau_i+1
        u=(tau2*(1:n==i)-(tau1+tau2)*(1:n==i+1)+tau1*(1:n==i+2))'; % (24)
        if u'*x<tau1*tau2*(3*d(i)-c(i))/2
            for k=0:2
                p(k+i)=x(k+i)-((u'*x-tau1*tau2*(d(i)+c(i))/2)/(norm(u))^2)*u(k+i);
            end
        elseif tau1*tau2*(3*d(i)-c(i))/2<=u'*x && u'*x<d(i)*tau1*tau2
            for k=0:2
                p(k+i)=x(k+i)-2*((u'*x-d(i)*tau1*tau2/(norm(u))^2))*u(k+i);
            end
        elseif c(i)*tau1*tau2<u'*x && u'*x <= tau1*tau2*(3*c(i)-d(i))/2
            for k=0:2
                p(k+i)=x(k+i)-2*((u'*x-c(i)*tau1*tau2/(norm(u))^2))*u(k+i);
            end
        elseif tau1*tau2*(3*c(i)-d(i))/2 < u'*x
            for k=0:2
                p(k+i)=x(k+i)-((u'*x-tau1*tau2*(d(i)+c(i))/2)/(norm(u))^2)*u(k+i);
            end
        end
    end
else
    for i=3:3:n-2
        tau1=t(i+1)-t(i); % tau_i
        tau2=t(i+2)-t(i+1); % tau_i+1
        u=(tau2*(1:n==i)-(tau1+tau2)*(1:n==i+1)+tau1*(1:n==i+2))'; % (24)
        if u'*x<d(i)*tau1*tau2
            for k=0:2
                p(k+i)=x(k+i)+((d(i)*tau1*tau2-u'*x)/(norm(u))^2)*u(k+i);
            end
        elseif c(i)*tau1*tau2 < u'*x
            for k=0:2
                p(k+i)=x(k+i)+((c(i)*tau1*tau2-u'*x)/(norm(u))^2)*u(k+i);
            end
        end
    end
end
end


Dann die Erzeugung der Daten hiermit:
Code:

L=500; V=30; sigmax=150;
z=0.625*V;
n=round(random('Uniform', (ceil(L/(3*min(z,30)))), floor((1+L/(1.5*min(z,30)))), [1,1]));
t=0+L/n:L/n:L;
v=random('Uniform', 0, sigmax, 1, n);
for i=1:n-1
    while sqrt((t(i)-t(i+1))^2+(v(i)+v(i+1))^2)<z
        v(i+1)=v(i+1)+random('Uniform', 0, sigmax-v(i+1), [1,1]);
    end
end
I=zeros(1, n);
I(1)=1; I(n-7)= 1; I(n-3)=1; I(n)=1;


a=2*ones(n-1, 1);
d=ones(n-2, 1);
c=4*ones(n-2,1);

plot(t, v)
hold on;
for i=1:n
    if I(i)==1
        plot(t(i), v(i), 'r*')
    end
end


Und dann die Anwendung der Projektion:
Code:

ic=1;
xneu=PCthree(v', t', c, d, ic)
   
plot(t, xneu)


Hoffe es ist verständlich Sad

Danke für die schnelle Antwort!! Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.04.2014, 11:27     Titel:
  Antworten mit Zitat      
so ok das programm läuft jetzt durch und an welcher stelle in deinem 2. post macht das programm nicht das was es soll?` ich kann bei mir keinen vektor finden der 0 ist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Akina92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2014, 12:11     Titel:
  Antworten mit Zitat      
Der Vektor v wird als Nullvektor geplottet, obwohl er, wenn man ihn ausgeben lässt, nicht null ist. Er wird ja nicht verändert, aber der Plot verändert sich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.04.2014, 12:20     Titel:
  Antworten mit Zitat      
wie gesagt bei mir wird nichts als "0 vektor" geplottet. ich kann das problem mit dem code nicht nachvollziehen.
lad mal ein beispiel bild hoch.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Akina92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2014, 12:23     Titel:
  Antworten mit Zitat      
Habs grad selbst herausgefunden. Es schaut nur so aus, weil die Skalierung der Achse verändert wird. Ich Dussel Embarassed Tut mir leid!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.