Verfasst am: 24.11.2021, 19:15
Titel: CSV-Datei in Matlab öffnen und auswerten
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!
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 ;)
Felix_CSV
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.11.2021, 16:04
Titel:
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.
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")
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 ;)
Felix_CSV
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.11.2021, 17:33
Titel:
Hallo Harald,
gibt es das Onramp auch auf deutsch?
Vielen Dank, es funktioniert alles so wie es soll.
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 ;)
Einstellungen und Berechtigungen
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
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.