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

konzentrische Kreise mit Farbverlauf plotten

 

thomasb
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 22.02.2009, 19:41     Titel: konzentrische Kreise mit Farbverlauf plotten
  Antworten mit Zitat      
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 Sad

Ich hoffe ihr könnt mir dabei weiterhelfen, da es die letzte Sache ist, die ich noch für meine Studienarbeit machen muss Wink

Vielen Dank!!!!

Gruß Tom
Private Nachricht senden Benutzer-Profile anzeigen


thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 23.02.2009, 22:17     Titel:
  Antworten mit Zitat      
Hhhhmmmmm......

Hab ich das schlecht beschrieben oder ist mein "Problem" so einfach, dass ich nur nicht selbst drauf komme???
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2009, 23:07     Titel:
  Antworten mit Zitat      
Ist wohl nicht ganz leicht.
Wie genau stellst du dir denn die Farbverläufe vor?
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 24.02.2009, 11:24     Titel:
  Antworten mit Zitat      
Also ich lese folgende Daten aus Excel aus:

1. Spalte Abstandswerte in µm vom Rand einer Rundstabprobe (33 Stück): 70, 200, 400, 600, 800, 1000 ... 6400

2. Spalte Messwerte (auch 33 Stück): 208, 506, 536, 547, 553, 430, 539, 547 ... 571

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 Question
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 Confused

Ich glaube das Ende meiner Studienarbeit rückt in weite Ferne Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2009, 12:55     Titel:
  Antworten mit Zitat      
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.
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 24.02.2009, 13:00     Titel:
  Antworten mit Zitat      
Hallo Tom,

nicht gleich in Panik verfallen. Cool 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];

% Vollwinkel
phi = 0:pi/20:2*pi;

% Kreise
[PHI,R] = meshgrid(phi,r);
[X,Y] = pol2cart(PHI,R);
Z = repmat(d,1,size(X,2));

% Darstellung
pcolor(X,Y,Z)
colorbar
axis equal


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.

Interpolieren der Daten geht natürlich auch:
Code:
r_interp = linspace(min(r),max(r),100)';
d_interp = interp1(r,d,r_interp);

% Kreise
[PHI,R] = meshgrid(phi,r_interp);
[X,Y] = pol2cart(PHI,R);
Z = repmat(d_interp,1,size(X,2));

% Darstellung
pcolor(X,Y,Z)


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 24.02.2009, 16:01     Titel:
  Antworten mit Zitat      
Hallo Bijick,

VIELEN DANK FÜR DEINE HILFE!!!

Ich habe beide Varianten ausprobiert und noch ein wenig mit rumgespielt. Funktioniert alles bestens Very Happy 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.

Vielen Dank im Voraus für die weitere Hilfe!!!

Grüße,
Tom
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 24.02.2009, 16:58     Titel:
  Antworten mit Zitat      
Hallo Tom,

poste bitte mal ein Code-Beispiel ohne Farbverlauf in der colorbar. Bei mir klappt es. Passiert der Fehler auch bei meinem Code?

Für die Colormap musst Du nur Minimal- und Maximalwert der Messwerte speichern. Mit

Code:
caxis([min_d,max_d])


kannst Du dieselbe Farbskala für andere Grafiken verwenden.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 24.02.2009, 17:21     Titel:
  Antworten mit Zitat      
Hallo Bijick,

hier mein Quellcode:
Code:
%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;

for i=1:anzahl
    r(1,i)=6.4-xmm(1,i);
end

%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


%Zeichnen
% Vollwinkel
phi = 0:pi/20:2*pi;

% Kreise
[PHI,R] = meshgrid(phi,r);
[X,Y] = pol2cart(PHI,R);
Z = repmat(haerte,1,size(X,2));

% Darstellung
pcolor(X,Y,Z)
caxis([min(haerte),max(haerte)])
colorbar
axis equal
 


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?).

Viele Grüße,
Tom

Screenshot Plot.jpg
 Beschreibung:

Download
 Dateiname:  Screenshot Plot.jpg
 Dateigröße:  592.88 KB
 Heruntergeladen:  883 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 26.02.2009, 10:36     Titel:
  Antworten mit Zitat      
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???

Danke!!!!

Viele Grüße vom Schreibtisch,
Tom
Private Nachricht senden Benutzer-Profile anzeigen
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 26.02.2009, 15:54     Titel:
  Antworten mit Zitat      
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???
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 26.02.2009, 18:12     Titel:
  Antworten mit Zitat      
Hallo Tom,

das geht mit

Code:


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 26.02.2009, 22:22     Titel:
  Antworten mit Zitat      
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 Evil or Very Mad ). 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 Sad

Ich glaube Matlab kann mich nicht leiden Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
thomasb
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.02.09
Wohnort: LA - NRW
Version: ---
     Beitrag Verfasst am: 04.03.2009, 12:44     Titel: DANKE
  Antworten mit Zitat      
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 Very Happy
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 - 2024 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.