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

2D-Plot zeigt nur Punkte

 

fezz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2011, 18:49     Titel: 2D-Plot zeigt nur Punkte
  Antworten mit Zitat      
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?


Danke für eure Hilfe!

fezz


dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 20.04.2011, 19:39     Titel:
  Antworten mit Zitat      
Hallo, könntest du bitte die Daten für den Plot und auch den Code zur Verfügung stellen, dann kann man das Problem eher erkennen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
fezz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2011, 20:06     Titel:
  Antworten mit Zitat      
Code:
clc
global T  
for T=300:100:1400
   
   % 1. Diagramm: Plancksche Strahlungskurven:
   
   lambda=0:100:12000;
   y=Planck(lambda);
   
   hold on
   
   subplot(1,3,1); plot(lambda,y);
   
   xlabel('Wellenlaenge \lambda in nm');
   ylabel('Strahldichte Le in W/(m^2*nm*sr)');
   grid on
   
   % 1.1 Temperaturen neben die Maxima schreiben:  
   
   lambdamax=fminbnd('-Planck(x)',0,12000);
   text(lambdamax,Planck(lambdamax),num2str(T));
   
  % 2. Diagramm: Maximale Wellenlänge in Abhängigkeit der Temperatur:
   
   hold on
   
   subplot(1,3,2); plot(T,lambdamax,'ro')
   xlabel('Temperatur T in K');
   ylabel('Wellenlaenge \lambda in nm');
   grid on
   
   % 3. Spezifische Ausstrahlung gegen T^4:
   
   M = pi*quadl('Planck',1,120000);
   
   hold on
   
   subplot(1,3,3); plot(T^4,M,'co')
   xlabel('Temperatur^4 in K^4');
   ylabel('spezifische Ausstrahlung Me in W/m^2');
   grid on

end

hold off


die Funktion Planck ist in einer externen m-Datei... aber das sollte ja egal sein, da die ja nur was berechnet und den wert zurück gibt...
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 20.04.2011, 21:10     Titel:
  Antworten mit Zitat      
Hallo,

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.

Grüße, Dani
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.04.2011, 21:13     Titel:
  Antworten mit Zitat      
Hallo fezz,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
fezz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2011, 23:32     Titel:
  Antworten mit Zitat      
@ 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: ---
     Beitrag Verfasst am: 21.04.2011, 09:12     Titel:
  Antworten mit Zitat      
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...
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 21.04.2011, 09:52     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
fezz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2011, 10:33     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 21.04.2011, 10:50     Titel:
  Antworten mit Zitat      
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...
 
dani
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 03.01.11
Wohnort: Wernberg
Version: ---
     Beitrag Verfasst am: 21.04.2011, 10:58     Titel:
  Antworten mit Zitat      
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)
 


Grüße, Dani
Private Nachricht senden Benutzer-Profile anzeigen
 
fezz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2011, 12:08     Titel:
  Antworten mit Zitat      
habs hinbekommen
 
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.