Forum: Digitale Signalverarbeitung / DSP / Machine Learning Matlab 3D-Plot aus CSV Messdatenmatrix


von Bert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich würde gerne aus der angehängten csv Datei ein 3D-Plot mit Matlab 
generieren. Die Position der Messung ist durch die 1 Zeile (x-Richtung) 
und erste Spalte (y-Richtung) vorgebeben. Das heißt sie sind nicht in 
dem Format, so dass ich sie gleich den Funktionen surf oder plot3 
übergeben kann. Also ich habe nicht jede einzelne Koordinate in der CSV 
Datei geben, sondern eher eine "Messmatrix". Weiß jemand wie man das 
plotten kann?
Ich habe es auch noch nicht geschafft die csv Datei in Matlab 
einzulesen. Vlt. kann mir dazu auch jemand einen Tipp geben.
Danke schon mal!

von Walter T. (Gast)


Lesenswert?

doc dlmread. Sind gute Beispiele dabei.

von 3dplotter (Gast)


Angehängte Dateien:

Lesenswert?

data = dlmread ("C:/users/emm/Downloads/messmatrix.csv", ";", 1, 1, 
"emptyvalue", NA);
surf(data)

von Bert (Gast)


Lesenswert?

Optimal, danke!

von Jan K. (jan_k776)


Lesenswert?

Ich würde `dlmread` nicht mehr nutzen, nimm readtable 
(https://www.mathworks.com/help/matlab/ref/readtable.html).

Unten ein Code Beispiel, das auch die x und y Koordinaten 
berücksichtigt.
1
T = readtable("D:\Downloads\Messmatrix.csv", Delimiter=";", DecimalSeparator=",");
2
3
xCoord = T{1,2:end}; % 1. Zeile
4
yCoord = T{2:end,1}; % 1. Spalte
5
zData = T{2:end, 2:end}; % Daten "Matrix"
6
7
% surf braucht ein grid mit derselben Größe wie die Daten
8
[xGrid, yGrid] = meshgrid(xCoord, yCoord);
9
10
% plot me
11
surf(xGrid, yGrid, zData);
12
xlabel('x'), ylabel('y'), zlabel('z')

von MATLAB-user (Gast)


Lesenswert?

Jan K. schrieb:
> Ich würde `dlmread` nicht mehr nutzen, nimm readtable
> (https://www.mathworks.com/help/matlab/ref/readtable.html).
Was wäre dafür der Grund?

O.g. Anforderung kann man auch mit Excel direkt lösen.

von Anonymus B. (anonymus_bugmenot)


Lesenswert?

MATLAB-user schrieb:
>> Ich würde `dlmread` nicht mehr nutzen, nimm readtable
>> (https://www.mathworks.com/help/matlab/ref/readtable.html).
> Was wäre dafür der Grund?

deprecated

von Jan K. (jan_k)


Lesenswert?

MATLAB-user schrieb:
> Jan K. schrieb:
>> Ich würde `dlmread` nicht mehr nutzen, nimm readtable
>> (https://www.mathworks.com/help/matlab/ref/readtable.html).
> Was wäre dafür der Grund?

Dlmread ist halt Low Level file I/o. Ggf sogar deprecated mittlerweile. 
Readtable ist eine high level Funktion, die viel mehr kann und auch viel 
selbsterklärender ist, was die Parameter angehen. Zurück kommt ein table 
Datentyp, auf den das gesamte ML ecosystem momentan migriert. Für das 
Beispiel hier hat es keine großen Vorteile außer der Parameter, true. 
Für ganz ganz viele weitere aber schon. Und es hat keine Nachteile, 
daher kann man es jetzt schon nutzen;)

>
> O.g. Anforderung kann man auch mit Excel direkt lösen.

Jo.. aber meistens möchte man ja auch mehr machen. Und wer Matlab hat, 
der möchte für die wenigsten Dinge noch Excel nutzen ;)

von Walter T. (nicolas)


Lesenswert?

Anonymus_bugmenot A. schrieb:
> deprecated

dlmread ist zwar deprecated, aber die Doku immer noch extrem gut. Und 
sie leitet auf alle daraus abgeleiteten Funktionen weiter. Ich hätte 
einfach csvread() genutzt.

: Bearbeitet durch User
von Jan K. (jan_k)


Lesenswert?

csvread ist ebenso nicht mehr empfohlen, sondern readmatrix() und das 
ist eben Teil der neueren readxxx() Funktionen, zu der auch readtable 
gehört. In der Tat ist hier readmatrix wohl die bessere Funktion als 
readtable, die ich oben vorschlug, weil die Daten eigentlich nicht 
tabellarisch sind. Die Funktionsparameter sind aber identisch.

von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

readmatrix() ab Matlab 2019b

von Alf (Gast)


Lesenswert?

Jan K. schrieb:
> csvread ist ebenso nicht mehr empfohlen, sondern readmatrix() und das
> ist eben Teil der neueren readxxx() Funktionen,

Werden aber nicht eingestellt, oder?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.