Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

MATLAB & Simulink Student Suite Studentenversion R2018b

Fachkräfte:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

CSV-Datei in Matlab öffnen und auswerten

 

Felix_CSV

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2021, 19:15     Titel: CSV-Datei in Matlab öffnen und auswerten
  Antworten mit Zitat      
Hallo zusammen,

ich habe noch nicht viel Erfahrung mit Matlab und stehe vor einem Problem.

Ich lese verschiedene Messwerte (Zeit, Drehmoment Verbrenner, Drehmoment E-Maschine, Geschwindigkeit, Pedalstellung) von einem Porsche Cayenne Hybrid aus, die in einer CSV-Datei abgespeichert werden.

Diese Messwerte werden alle untereinander in einer Spalte ausgegeben. In den anderen Spalten steht die Einheit, die Bezeichnung des Messwertes, die zugehörige Zeit und der Chart bzw. Graphindex (siehe Anhang).

Jetzt benötige ich ein Matlab-Skript, welches die verschiedenen Messwerte im Workspace in eine .mat Datei abspeichert. Der Name der .mat-Datei soll die Bezeichnung des Messwertes haben. Somit müsste Matlab automatisch erkennen, wann ein neuer Messwert beginnt und diese Messwertreihe dann abspeichern.

Hat jemand eine Idee wie das funktionieren könnte? Vielen Dank im voraus!

Liebe Grüße
Felix

dataloggerprotocol-2.csv.zip
 Beschreibung:
Messwerte

Download
 Dateiname:  dataloggerprotocol-2.csv.zip
 Dateigröße:  3.61 KB
 Heruntergeladen:  7 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 23.520
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2021, 09:11     Titel:
  Antworten mit Zitat      
Hallo,

ich gehe davon aus, dass die Daten zu einem Signal immer am Stück vorliegen und nicht zwischen verschiedenen Signalen hin- und hergewechselt wird.

Vorschlag:
Code:
T = readtable("dataloggerprotocol-2.csv", "TextType","string");
change = find(diff(T.ChartIndex) ~= 0);
startSignal = [1; change + 1];
endSignal = [change; height(T)];
for k = 1:length(startSignal)
    data = T(startSignal(k):endSignal(k), ["Unit", "x", "y"]);
    save(replace(T{startSignal(k),"ServiceName"}, ":", "-"), "data")
end


Einen schnellen Einstieg in MATLAB bekommst du mit dem MATLAB Onramp:
https://de.mathworks.com/learn/tutorials/matlab-onramp.html

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix_CSV

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2021, 16:04     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Hilfe.

Das grobe funktioniert auf jeden Fall.

Die Einheiten und die zugehörige Zeit benötige ich erstmal nicht.

Im nächsten Schritt wollte ich die importierten Daten in den Mat-Dateien umbenennen. Aktuell heißen die Variablen in der Mat-Datei "data". Dafür würde ich gern (wie im Code zusehen ist) die Variablen zu M_DE, M_DV, V_mess und u_FP umbenennen.

Außerdem benötige ich zum Schluss nur eine Mat-Datei, in der die importierten Daten (M_DE, M_DV, V_mess und u_FP) gebündelt drin sind. Ist das irgendwie möglich? Meine Versuche sind gescheitert.

[code:]
[clear all;
close all;
clc;

T = readtable("dataloggerprotocol-2.csv", "TextType","string");
change = find(diff(T.ChartIndex) ~= 0);
startSignal = [1; change + 1];
endSignal = [change; height(T)];
for k = 1:length(startSignal)
data = T(startSignal(k):endSignal(k), ["y"]);
save(replace(T{startSignal(k),"ServiceName"}, ":", "-"), "data")
end
load('DME_HYBRID: Emachine_torque_actual_value.mat')
load('DME_HYBRID: Engine torque.mat')
load('DME_HYBRID: Vehicle Speed Sensor.mat')
load('DME_HYBRID: Accelerator pedal position.mat')


if "ServiceName" == 'DME_HYBRID: Emachine_torque_actual_value'
"data" == 'M_DE'
end
if "ServiceName" == 'DME_HYBRID: Engine torque'
'data' == 'M_DV'
end
if "ServiceName" == 'DME_HYBRID: Vehicle Speed Sensor'
"data" == 'V_mess'
end
if 'ServiceName' == 'DME_HYBRID: Accelerator pedal position'
"data" == 'u_FP'
end]

Vielen Dank im Voraus und ich werde mir MATLAB Onramp mal anschauen.

Liebe Grüße
Felix
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.520
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2021, 16:21     Titel:
  Antworten mit Zitat      
Hallo,

der Code hat geholfen mir zu veranschaulichen, was du erreichen willst. Wenn MATLAB das verstehen soll, musst du dich aber an MATLAB-Syntax halten. Ich kann da nur das Onramp (und weiterführende Angebote) empfehlen.

Angepasst:
Code:
T = readtable("dataloggerprotocol-2.csv", "TextType","string");
change = find(diff(T.ChartIndex) ~= 0);
startSignal = [1; change + 1];
endSignal = [change; height(T)];
data = struct();
for k = 1:length(startSignal)
    if T{startSignal(k),"ServiceName"} == "DME_HYBRID: Emachine_torque_actual_value"
        name = "M_DE";
    end
    if T{startSignal(k),"ServiceName"} == "DME_HYBRID: Engine torque"
        name = "M_DV";
    end
    if T{startSignal(k),"ServiceName"} == "DME_HYBRID: Vehicle Speed Sensor"
        name = "V_mess";
    end
    if T{startSignal(k),"ServiceName"} == "DME_HYBRID: Accelerator pedal position"
        name = "u_FP";
    end
    data.(name) = T(startSignal(k):endSignal(k), ["x", "y"]);
    %save(replace(T{startSignal(k),"ServiceName"}, ":", "-"), "data")
end
save("someFileName.mat", "-struct", "data")


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Felix_CSV

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2021, 17:33     Titel:
  Antworten mit Zitat      
Hallo Harald,

gibt es das Onramp auch auf deutsch?
Vielen Dank, es funktioniert alles so wie es soll.

LG
Felix
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.520
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2021, 18:07     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
gibt es das Onramp auch auf deutsch?

Nicht dass ich wüsste.

Wenn dir die Sprache wichtig ist, könnten deutschsprachige Bücher interessant sein:
https://de.mathworks.com/academia/b.....et-language:de&page=1
Oder Youtube:
https://www.youtube.com/results?search_query=matlab+grundlagen
oder was es sonst noch so gibt:
https://www.google.com/search?q=matlab+grundlagen

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.