Verfasst am: 22.02.2009, 18:41
Titel: konzentrische Kreise mit Farbverlauf plotten
Hallo zusammen,
ich bin Matlab-Neuling und muss für die Auswertung in meiner Studienarbeit ein Programm schreiben.
Ich habe es mit Hilfe des Forums schon geschafft die Werte aus Exceldateien in Matlab einzulesen und habe jetzt zwei einzeilige Matrizen. Eine enthält die Radienwerte für die konzentrischen Kreise und die andere enthält Messwerte im Bereich von 100-700. Dabei ist es so, dass einem Radienwert ein bestimmter Messwert zugeordnet ist. Ich möchte nun konzentrische Kreise mit den Radienwerten zeichnen und einen Farbverlauf auf der Fläche erzeugen, der auf den Messwerten basiert. Nur leider bin ich da mit meinem Latein am Ende
Ich hoffe ihr könnt mir dabei weiterhelfen, da es die letzte Sache ist, die ich noch für meine Studienarbeit machen muss
Das Programm rechnet zunächst die Abstandswerte von µm in mm um und berechnet danach die Radienwerte für die Kreise. Der Farbverlauf soll nun vom kleinsten Wert (in diesem Beispiel 208) mit blau anfangen und den höchsten Wert (hier 571) auf rot setzen. Die Farben für die Werte dazwischen kann Matlab irgendwie interpolieren, aber leider weiß ich nicht wie das alles funktionieren soll
Gefordert wird von meinem Prof also ein Plot mit 33 konzentrischen Kreisen, wo die Fläche des äußersten Kreisrings im obigen Beispiel blau eingefärbt wäre und dann bis zum innersten Kreis, der rot ist, die Farben für die Messwerte interpoliert werden. Also muss ich irgendwie die Fläche zwischen zwei Radienwerten mit der den Messwert repräsentierenden Farbe einfärben
Ich glaube das Ende meiner Studienarbeit rückt in weite Ferne
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 24.02.2009, 11:55
Titel:
Versuch doch den Plot Messwert(y) über Abstand(x) um die y-Achse zu rotieren (vielleicht vor der Rotation noch geeignet glätten/interpolieren) und das Ergebnis mit contour oder contourf darzustellen. Das müsste in etwa das sein, was du haben willst.
Alternativ kannst du mit fill oder patch eigene beliebig gefüllte Kreise zeichnen, musst dich aber um die Farben kümmern.
nicht gleich in Panik verfallen. Meine Suche in der Matlab-Hilfe nach "polar circle" (wegen der Vermutung, dass das am leichtesten mit Polarkoordinaten geht) hat mich zu einer passenden Seite geführt. Mit ein bisschen Herumprobieren ist dann dies herausgekommen:
Code:
% R: Radien in Mikrometer
r = [0;70;200;400;600;800;1000];
% D: Daten
d = [208;506;536;547;553;430;430];
Wichtig ist es, "0" als ersten Radius anzugeben. Damit die Anzahl der Werte dann wieder passt, muss man an den d-Vektor noch eine beliebige Zahl anhängen.
Ich habe beide Varianten ausprobiert und noch ein wenig mit rumgespielt. Funktioniert alles bestens Werde aber die Variante ohne Interpolation nehmen, da man hier genau sehen kann, dass es sich um 33 Messwerte handelt
Habe aber mal noch ne Frage zur Colorbar. Sie wir mir zwar rechts neben dem Plot angezeigt, jedoch ohne Farbverlauf. Also es wird gar keine Farbe angezeigt. Wie bekomme ich denn da den Farbverlauf hin und eine passende Beschriftung???
Wie kann ich denn die Colormap ändern und dann speichern, sodass beim nächsten Aufruf des Programms der gleiche Farbverlauf ensteht??? Hintergrund ist, dass ich mehrere Plots erstellen möchte mit dem Programm und dann nur die eingelesenen Werte ändere.
%Einlesen der X-Werte, die in µm gegeben sind
xwert=xlsread('C:\Dokumente und Einstellungen\user1\Desktop\Härtemessung Wertetabellen\Test1.xls', 'Tabelle1', 'C1:C33');
%Umrechnen der X-Werte in mm und von Spalten in Zeilen umwandeln
xmm=xwert'/1000;
%Berechnen der Radien für die konzentrischen Kreise
anzahl=33;
%Einlesen der Härtewere
haerte=xlsread('C:\Dokumente und Einstellungen\user1\Desktop\Härtemessung Wertetabellen\Test1.xls', 'Tabelle1', 'B1:B33');
disp(sprintf('Zur Kontrolle die 33 eingelesenen Härte-Werte in HV1:'));
haerte
Habe noch einen Screenshot beigefügt, wie der Plot bei mir am Bildschirm aussieht.
Wegen den Farbscalen: Ich muss sogar immer die gleichen benutzen, damit man die Unterschiede bei den einzelnen Plots erkennen kann.
Wenn ich den colormapeditor benutze kann ich mir die Farben so anpassen wie ich es möchte. Schließe ich aber das Plot-Fenster und führe das Programm erneut aus werden meine gemachten Änderungen im colormapeditor zurückgesetzt (denke auf die Standardwerte?).
Habe gerade mal das Programm auf einem anderen PC laufen lassen und hier wird bei dem Plot die Colorbar richtig angezeigt. Liegt wohl irgendwie an meinem Matlab... Aber egal. Es funktioniert soweit. Jetzt bräuchte ich nur noch Hilfe dabei, die Colormap so zu konfigurieren, dass ich bei jedem Aufruf des Programms für einen Härtewert immer die selbe Farbe habe. Kann mir da vielleicht noch jemand weiterhelfen???
Habe die Colormap mit Colormapeditor so angepasst von Hand wie ich sie brauche. Danach mit farbe=colormap die Werte der Colormapmatrix in eine Variable farbe übertragen. Wie kann ich denn jetzt dem Programm begreiflich machen, dass er als colormap-Matrix die Variable farbe nimmt???
Irgendwie habe ich das Gefühl, dass mich mein Matlab auf den Arm nehmen will. Mir werden immer noch keine Farben in der Colorbar angezeigt (auf dem Uni-PC gings heute morgen ). Dafür konnte ich auf dem Uni-PC nicht wie von dir beschrieben die geänderte Colormap aufrufen. Das wiederum funktionierte bis gerade hier bei mir zu Hause. Jetzt auch nicht mehr
Ich möchte mich noch mal für die schnelle und super Hilfe bei allen bedanken!!!!
Habe die Plots fertig und morgen einen Termin wg. Abgabe der Arbeit
Einstellungen und Berechtigungen
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.