3D erstellen aus mehr vektoren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:09 Mi 21.11.2007 | Autor: | mfis |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
hallo,
zuerst möchte ich voraus schicken, dass ich mich mit MATLAB nicht wirklich auskenne und dies meine ersten versuche sind.
Problem: ich habe mehrere dateien die jeweils aus 3 spalten bestehen, aber mit unterschiedlicher zeilenzahl. jede zeile steht für einen punkt (x,y,z), wobei es sich um normierte werte [0,1] handelt.
die punkte einer Datei sollen jeweils in der gleichen farbe dargestellt werden.
das auslesen funktioniert soweit:
...
fid = fopen('test1.txt');
A = fscanf(fid,'%g %g %g',[3 inf])';
fclose(fid);
PRA=A(:,1);
LWA=A(:,2);
PUA=A(:,3);
fid = fopen('test2.txt');
B = fscanf(fid,'%g %g %g',[3 inf])';
fclose(fid);
PRB=B(:,1);
LWB=B(:,2);
PUB=B(:,3);
fid = fopen('test3.txt');
C = fscanf(fid,'%g %g %g',[3 inf])';
fclose(fid);
PRC=C(:,1);
LWC=C(:,2);
PUC=C(:,3);
...
die frage ist nun, wie diese werte in einem 3D diagramm gleichzeitig dargestellt werden können?
viele grüsse
mfis
|
|
|
|
Hallo und ,
es gibt mehrere Möglichkeiten, dies zu erreichen.
1.
Wenn es dir nicht darauf ankommt, die einzelnen Dateiinhalte getrennt aufzubewahren, dann kannst du sie schon beim Einlesen in je einen Vektor packen:
PR = []; LW = []; PU = [];
for i=1:anzahl_dateien,
A = load(sprintf('test%g.txt', i)); %wegen des einfachen Dateiformats
PR = [PR ; A(:,1)];
LW = [LW ; A(:,2)];
PU = [PU ; A(:,3)];
end;
plot3(PR, LW, PU, '.');
2.
Du willst getrennte Vektoren für jeden Datensatz:
<Einlesen aller Vektoren>
plot([PRA ; PRB ; PRC ; PRD ; ...] , [LWA ; LWB ; LWC ; LWD ; ...] , [PUA ; PUB ; PUC ; PUD ; ...], '.');
3.
Alternativ:
<Einlesen aller Vektoren>
hold on;
plot3(PRA, LWA, PUA, '.');
plot3(PRB, LWB, PUB, '.');
plot3(PRC, LWC, PUC, '.');
...
hold off;
Ich würde auf jeden Fall etwas mit Schleifen empfehlen, wenn die Dateinamen alle nach dem gleichen Muster aufgebaut sind.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:21 Mi 21.11.2007 | Autor: | mfis |
das ging ja super schnell.
vielen dank!
hab die letzte variante erstmal genutzt und fkt. soweit.
mich würde jetzt noch interessieren, wie man die punkte farblich kennzeichnen kann in derart, dass alle punkte einer datei die gleiche farbe erhalten.
vielleicht noch zum hintergrund:
die punkte innerhalb einer datei repräsentieren eine pareto-)lösungsmenge bzw paretofront eines mehrkriteriellen optimierungsproblems. datei 1 ist die exakte lösung. alle anderen lösungen sind lösungen heuristischer verfahren. so dass durch dass diagramm die annäherung an die exakte front ersichtlich werden soll.
so in etwa soll es aussehen:
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Hallo,
> mich würde jetzt noch interessieren, wie man die punkte farblich kennzeichnen kann in derart, dass alle punkte einer datei die gleiche farbe erhalten.
Das geht per:
plot3(<Daten>,'.', 'Color', [r g b]);
mit [mm] $r,g,b\in[0 [/mm] ; 1]$.
Man kann natürlich auch die Form der "Punkte" verändern. Schau dir mal die Hilfe zu plot an.
Gruß
Martin
|
|
|
|