Verfasst am: 20.04.2011, 18:49
Titel: 2D-Plot zeigt nur Punkte
Hallo!
Ich habe in Matlab drei Plots erstellt. Der erste wird als durchgehende Linie dargestellt, die zwei anderen allerdings nur als Punkte.
Das Hinzufügen von 'r-' bringt nix!
Ich habe in der Matlab-Hilfe gelesen, wenn bei den Daten für den Plot eine Liste, bzw ein Vektor auf eine skalare Größe trifft, der Plot nur durch Punkte dargestellt wird.
Meine Frage ist jetzt:
Kann ich irgendwas machen, damit Matlab die Plots trotzdem als Linien darstellt? Oder kann ich das Problem irgendwie umgehen?
ich kann zwar das Skript nicht ausführen und ausprobieren, weil eben Funktionen fehlen, aber wenn ich das richtig sehe liegt es daran,
dass du beim 1. subplot einen vektor übergibst, deshalb auch keine probleme hast und bei den anderen subplots in jedem durchgang nur einen wert für x und y, also nur einen Punkt übergibst.
wenn du in der for-schleife nur die Vektoren mit den x und y Werten berechnen lässt und erst danach deine vektoren plottest (anstatt jeden wert extra in einem Schleifendurchgang) dann, denke ich, dürfte es kein Problem sein, eine durchgehende Linie zu plotten.
Und welche Code-Zeilen führen nun zum unerwünschten Ergebnis?
"plot(T^4,M,'co')" z.B. ist eine explizite Anweisung die Daten mit Punkten zu zeichnen und keine Linie zu ziehen.
Es ist übrigens sehr unegwöhnlich den Zähler einer Schleife (hier "T") als globale Variable zu deklarieren. Ist das wirklich hilfeich?
Gruß, Jan
fezz
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.04.2011, 23:32
Titel:
@ Dani
Das werde ich mal versuchen.
@ Jan S
Ich weiß das 'ro' eine explizite Anweisung ist, allerdings werden auch Punkte gezeichnet wenn ich 'r-' dort hinschreibe.
Das T als globale variable übergeben werden soll ist Teil der Aufgabenstellung...
fezz
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.04.2011, 09:12
Titel:
also das funktioniert auch net wirklich.
kann es sein, dass das wirklich nicht geht, aus folgendem grund:
Die funktion Planck ist von T und von lambda abhängig, da aber T und Lambda in zwei unterschiedlich großen Intervallen läuft kann ich das nur mit punkten darstellen...?
wenn ich die anderen plots aus der for-schleife raus nehme meckert matlab das T und lambda unterschiedlich groß sind...
Ist es zutreffend, dass für lambdamax sowie M in jedem Schleifendirchlauf ein Wert berechnet wird?
wenn das so ist, dann hast du ja meines erachtens insgesamt genauso viele Werte im Lambdamax und im M -Vektor, wie du im T-Vektor hast.
Wenn die Vektoren gleich lang sind(T und M, bzw. T und lambdamax) dann dürfte bei den subplots 2 und 3 kein Fehler auftreten.
Vielleicht eventuell doch das gesamte Beispiel mit Funktionen im Anhang schicken, dann ists einfacher.
fezz
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.04.2011, 10:33
Titel:
ja die sind alle gleich groß!
allergind bekomme ich folgende fehlermeldung wenn ich das außerhalb der for-schleife mache:
??? Operands to the || and && operators must be convertible to logical
scalar values.
Error in ==> fminbnd at 310
if ( (fu <= fw) || (w == xf) )
Error in ==> test at 29
lambdamax=fminbnd('-Planck(x)',0,12000)
das alles ins netz stellen will ich ehrlich gesagt net, da man das forum hier sehr schnell findet. und wenn zufällig ein Kommilitone von mir das findet und kopiert muss ich meinem prof erklären, warum er das gleiche hat... is vllt en bissel paranoid aber evtl versteht ihr das ja...^^
fezz
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.04.2011, 10:50
Titel:
ich glaube das problem liegt daran, dass lambdamax=fminbnd('-Planck(x)',0,12000) für jedes T das lambdamax überschreibt, also immer nur einen wert speichert. wie kann ich matlab klar machen, dass es alle werte, also die lambdamax für jedes T in einem Vektor speichern soll. momentan ist lambdamax immer nur eine zahl. das erklärt auch, warum das in der forschleife mit den punkten funktioniert. da jeder punkt gleich geplottet wird...
Hallo,
das kannst du so machen, dass lambdamax nicht überschrieben wird:
Beispielprogramm:
Code:
T=100:100:1000;
for x=1:size(T,2)
lambdamax(x)= T(x)^2 ;%nur ein Beispiel für eine berechnung in der du T miteinbeziehst, jedoch immer nur einen Wert von T und nicht den gesamten vektor, sow wie du es brauchst?
end plot(T,lambdamax)
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
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.