2017-05-08 2 views
-2

Das Problem ist das Folgende: Ich habe eine TXT-Datei mit 3 Spalten von Zahlen. Die ersten 2 Spalten sind die Koordinaten x, y der Punkte. Die dritte Spalte (z-Vektor) besteht aus Zahlen, die die Leuchtkraft jedes Punktes ausdrücken. (Die TXT-Dateien wurden von einer Software erstellt, die zur Untersuchung der Bilder eines Verbrennungsprozesses verwendet wird). Jeder Vektor (x, y, z) besteht aus 316920 Elementen (alle ganzen Zahlen). Nun: Gibt es eine Möglichkeit, aus diesen 3 Vektoren ein Bild in Matlab zu erstellen, das den Helligkeitswert mit den Koordinaten des Punktes in Beziehung setzt? Danke für Ihre Zeit!Wie erstellt man ein Bild in Matlab (wenn möglich) aus der Matrix?

+1

Eine Matrix ist ein Bild, ein Bild eine Matrix ist. Können Sie Ihr Problem besser beschreiben? Ist das Problem, dass Ihre x, y Punkte nicht geordnet sind? Wenn ja, haben Sie ein Netz aller Punkte (d. H. Besteht die gesamte Kombination von x-y)? Sind sie ganze Zahlen oder schweben? Bitte lesen Sie [ask] und [mcve] –

+0

die Punkte (x, y) sind geordnet. Die Zahlen sind alle Ganzzahlen. (x, y, z alle Ganzzahlen) .Die Matrizen sind rechteckig – Lamberto

+0

Dann überprüfen Sie die Duplikate, Sie haben Ihre Lösung dort. –

Antwort

0

betrachten Sie eine Datei image.txt enthält y x und Intensität Werte getrennte Zeile. so was.

1 1 0 
1 2 12 
1 3 10 
.... 
.... 
255 255 0 

öffnen die Textdatei Funktion fopen

fid = fopen(image.txt,'r'); 
im=[]; 

und eine Schnur-Zeile von Zeichen durch fgetl Funktion gelesen Verwendung String-line in den Vektor unter Verwendung von sscanf und legen Intensitätswert in y- und x-Koordinaten konvertiert einer Bildmatrix, im.

tline=fgetl(fid) ; 
rd=sscanf(tline,'%d'); 
im(rd(1),rd(2))=rd(3); 

Derselbe Prozess wird iteriert, bis zum Ende der Datei. endlich schließen datei-handle fid

+0

Diese Methode sollte wie folgt aussehen fid = fopen ('image.txt', 'r'); – Reflection

+0

ja .. FID stellt Datei-Handle dar, image.txt -> zu lesende Datei und 'r' -> stellt Datei-Lesevorgang dar. – clcoder

+0

@ Clcoder ich meinte image.txt sollte als String wie diese 'image.txt' – Reflection

0

Ich gehe davon aus, dass die drei Spalten in Ihrer Textdatei Komma getrennt sind (Der Code muss ein bisschen anders sein, wenn sie nicht durch Komma getrennt sind). Da Sie gesagt haben, dass alle Zahlen Ganzzahlen sind, gehe ich davon aus, dass Sie alle Daten haben, die benötigt werden, um ein 2D-Gitter mit Ihren x- und y-Spalten zu füllen. Ich gehe nicht davon aus, dass es in einer geordneten Form ist. Unter diesen Annahmen wird der Code aussehen

data = csvread(filename) 
for i=1:length(data) 
matrix(data(i,2)+1,data(i,1)+1)=data(i,3) // +1 is added since there maybe a index starting from 0 and matlab needs them to start from 1 
end 
image(matrix) 

Für andere Trennzeichen verwenden

data = dlmread(filename,delimiter) 
Verwandte Themen