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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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_bugmenot A. (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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.