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

2 dimensionale Kurve plotten

 

mathlab2
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2015, 13:42     Titel: 2 dimensionale Kurve plotten
  Antworten mit Zitat      
Hallo zusammen,

ich bin relativ neu bei Matlab und habe so einige Schwierigkeiten.

Meine Frage ist, wie ich eine zwei-dimensionale Kurve (Bézier-Kurve) plotten kann?

Ich habe mal ein Bild angehängt, damit man besser sehen kann, was ich überhaupt möchte.

http://www.bilder-upload.eu/show.php?file=90cc16-1447597005.png

Ich möchte P(t) plotten. Wie schaffe ich das? Ich sollte noch erwähnen, dass die Variable t als syms definiert ist.

Ich danke euch vielmals im Voraus.

Bildschirmfoto 2015-11-15 um 13.40.57.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2015-11-15 um 13.40.57.png
 Dateigröße:  72.32 KB
 Heruntergeladen:  387 mal
Private Nachricht senden Benutzer-Profile anzeigen


Matrix87
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 11:52     Titel:
  Antworten mit Zitat      
Hi,

also um eine Funktion von t zu Plotten darf es kein Symbol seine sondern muss eine Reihe von Werten darstellen.

Dafür gibst du erstmal folgendes ein:

Code:
t = 0:.1:100


Das heißt t von 0 bis 100 in 0.1er Schritten. Dann rechnest du damit deine Funktion aus.
Dann:
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 12:26     Titel:
  Antworten mit Zitat      
Super vielen Dank. Ich probiere das gleich einmal aus und melde mich wieder Smile.
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 18:36     Titel:
  Antworten mit Zitat      
Hi ich bekomme leider folgende Fehlermeldung:

Code:
Error using plot
A numeric or double convertible argument is expected
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: 17.11.2015, 18:46     Titel:
  Antworten mit Zitat      
ohne den zugehörigen code kann die antwort nur eine übersetzung der fehlermeldung sein ^^
ich empfehle allen neulingen den thread aus meiner signatur zu lesen. das hilft im allgemeinen die fragen schneller beantworten zu können was ja im interesse aller ist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 18:58     Titel:
  Antworten mit Zitat      
Dank für den Hinweis.

Also hier ist der ganze Code, damit der Fehler reproduzierbar ist.

Code:
clear all;

syms t;
syms c;

n = input(['\n\nGeben Sie die Anzahl der Punkte ein ']);

 
B = zeros (n);
punkte = zeros(2,n);



for i = 1 : n
    a = i;
    punkte(:,i) = input(['\n\n Geben Sie die Punkte nacheinander in diesem Format ein [x,y] ']);
    a=a+1;
end


n = n-1;
for i = 0 : n
    for k = 0 : n-i
        B(i+1,k+1) = (-1)^(i+k+n)*nchoosek(n-i,k)*nchoosek(n,i);
    end
end

 for i = 1:n+1
     
     v(i) = t^(n);
     n = n-1;
 end
 
 v = transpose(v);
 
 %Bézier-Kurve P(t)%
 P(t) = punkte*B*v;
 %Bézier-Kurve P(t)%
 
 t = 0 : 0.1 :1;
 
 figure
 plot(t,P)
     
 


Die Anzahl der Punkte habe ich in meinem Fall mit 4 beantwortet. Und die Punkte die nacheinander eingegeben werden sollen sind folgende:
[0,0]
[1,3]
[2,2]
[1.5,1]

Vielen Dank im Voraus.
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: 17.11.2015, 19:13     Titel:
  Antworten mit Zitat      
c wird bei dir ganicht benutzt. ob das benutzen von symbolischen variablen zur übersicht beiträgt weis ich auch nicht. außerdem ist deine lösung immernoch ein mehrdimmensionales array.

Code:
clear all;

syms t;

n = 4
B = zeros (n);  
punkte=[0,0;1,3;2,2;1.5,1]'

n = n-1;
for i = 0 : n
    for k = 0 : n-i
        B(i+1,k+1) = (-1)^(i+k+n)*nchoosek(n-i,k)*nchoosek(n,i);
    end
end
 for i = 1:n+1
     
     v(i) = t^(n);
     n = n-1;
 end
 
 v = transpose(v);
 
 %Bézier-Kurve P(t)%
 P = punkte*B*v;
 %Bézier-Kurve P(t)%

 t1 = 0 : 0.1 :1;
 P1=matlabFunction(P)
 P11=P1(t1)
 figure
 plot(t1,P11(1,:))

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 19:26     Titel:
  Antworten mit Zitat      
Vielen Dank für deine schnelle Antwort. Echt cool, das Plotten klappt jetzt.

Aber leider stimmt die Kurve nicht mit der ursprünglichen Kurve überein.

Denn gebe ich die selbe Kurve in GEOGEBRA zum Plotten ein, erhalte ich einen anderen Graph.

Trotzdem Danke 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: 17.11.2015, 19:53     Titel:
  Antworten mit Zitat      
Zitat:
Denn gebe ich die selbe Kurve in GEOGEBRA zum Plotten ein, erhalte ich einen anderen Graph.

das ist eher unwahrscheinlich ^^. sicher das du die selbe kurve da eingibst ^^
hir hätten wir wieder das problem der unvollständigen beschreibung. so kann keiner helfen ohne unmengen sachen zu raten. sag immer was du machst. was rauskommt. und was du erwartest. wie gesagt. den thread aus meiner signatur lesen Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 20:10     Titel:
  Antworten mit Zitat      
Hi,

ich habe deine Signatur bereits gelesen.
Solange du die selben Punkte eingibst, muss die selbe Kurve rauskommen.

Zu der Frage was ich genau mache: Ich versuche eine Bézier-Kurve aus den 4 Punkten, mit einem Polynom vom Grad 3 zu erzeugen.
Dies geschieht über folgende Multiplikation: eine 4x2 Matrix indem die Punkte enhalten sind, mit einer 4x4 Matrix, und einem 4x1 Vektor, indem die Variablen absteigend enthalten sind.

Die Kurve, die bei Eingabe der von mir genannten Punkte entsteht ist:

P(t) = (3t - (3t³) / 2 , 4t³ - 12t² + 9t), wobei t aus dem Intervall [0,1] sein muss!

Wenn ich diese Kurve in Geogebra eingebe erhalte ich eine anderen Graph, als wenn ich diese Kurve in MATLAB plotte.
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: 17.11.2015, 20:26     Titel:
  Antworten mit Zitat      
Zitat:
Wenn ich diese Kurve in Geogebra eingebe erhalte ich eine anderen Graph, als wenn ich diese Kurve in MATLAB plotte.

dann machst du in beiden nicht das gleiche Smile
plotte mal die eigendliche bezier kurve in matlab
Code:
plot(P11(1,:),P11(2,:))

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 20:39     Titel:
  Antworten mit Zitat      
Unglaublich, jetzt stimmt es Very Happy
Ich danke dir vielmals.

Kannst Du mir bitte vielleicht noch erklären, was die Befehle machen, die du ergänzt hast.
Also
Code:
t1 = 0 : 0.001 :1;

Hier definieren wir einen Vektor mit den Einträgen von 0 bis 1 in 0.001 Schritten.

Code:

Hier definieren wir eine neue Variable P1 und weißen ihr P zusammen mit der matlabFunction, was macht die matlabFunction? Sagen wir MATLAB etwa, dass P als Funktion interpretiert werden soll?

Code:
P11=P1(t1)

Hier definieren wir eine neue Variable P11 und weißen ihr die ausgewerteten Punkte zu, P11 muss dann demnach eine (Anzahl der Schritte x 2)-Vektor sein, oder?

Code:
figure
 plot(P11(1,:),P11(2,:))

Hier plotten wir P11 an der Stelle 1,Confused und P11 an der Stelle 2,: ? was sollen diese (1,Smile und (2,Smile
Insbesondere interessiert mich, wieso wir nicht direkt P11 plotten können? P11 enthält doch sowohl die ausgewertete Punkte der x Komponente als auch die der y Komponente?

Ich danke dir!
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: 17.11.2015, 21:24     Titel:
  Antworten mit Zitat      
Zitat:
Hier definieren wir eine neue Variable P1 und weißen ihr P zusammen mit der matlabFunction, was macht die matlabFunction?

was matlabfunction machst steht in der doc dazu. ich mach hir aus der symbolischen funktion eine anonyme damit ich nicht mitsubs und eval arbeiten muss oder ezplot oder so
Zitat:
wieso wir nicht direkt P11 plotten können? P11 enthält doch sowohl die ausgewertete Punkte der x Komponente als auch die der y Komponente?

Code:
sind halt die x werte und das andere die y werte.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
mathlab2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.11.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2015, 21:31     Titel:
  Antworten mit Zitat      
Alles klar, vielen Dank nochmals Smile
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.