Verfasst am: 27.10.2017, 11:14
Titel: Einlesen eines CVS-Files in eine Matlab function
Hallo an alle,
ich schreibe zurzeit meine Abschlussarbeit und muss nun ein Matlab Skript samt Funktionen erstellen und diese anschließend plotten. Da ich überhaupt nicht fit in matlab bin, hoffe ich das mir hier geholfen wird.
Folgendes Problem: Ich habe ein cvs.file , dass wie folgt aufgebaut ist.
Es is für verschiedene Frequenzen, jeweils die Verschiebung und die dazugeörige Kraft angegeben. Hier ist jetzt nur,zwecks der Übersichtlichkeit, die ersten beiden Spalten abbgebildet. Als Trennzeichen wird ein Semicolon verwendet.
j = 0 for i = 1:2:width(table)% for Schleife zum durchlaufen der Tabelle für alle Frequenzen
j = j+1
name = table.properties.variable(i)
frequenz = str2double(regexprep(name{'_',''},{'.' ''})); % aufteilen der Frequenzspalten (jede Frequenz beinhalter den Weg x und die Kraft F)
data(j) = struct(...
'f', frequenz, ...
'x', str2double(table{2:end},i+0)),...% Umwandlung in den numerischen Bereich
'F', str2double(table{2:end},i+1); % Umwandlung in den numerischen Bereich end
Meine Frage nun. Ist das Skript für das einlesen der Datei richtig und wie müsste das Hauptprogramm ausschauen, die diese Funktion aufruft.
Das kann man schwer beurteilen, weil den Code ohne Beispieldaten nicht ausführen kann.
Also es sieht auf den ersten Blick okay aus, das einzige was du anpassen muss in
readtable
file zu übergeben.
Ach ja noch was, der Name
table
ist bereits für Matlab interne Funktionen vergeben, besser anders benennen sonst können unerwünschte Seiteneffekte entstehen
Und noch was bemerkt, brauchst nicht in der Schleife jedes mal struct erzeugen, hast ja vor der Schleife initialisiert:
Ich würde auch die Größe der struct vor der Schleife initialisieren, damit es schneller läuft
Und im Hauptprogramm rufst dann einfach die Funktion so auf, wie du diese deklariert hast, und das wäre alles, also versteh ich deine Frage nicht
Code:
% in Hauptprogramm dann so aufrufen:
data = readMeasurement( 'C:\Users\David\Desktop\Test Simulation\Messungen_Subvars\09 Messdaten\HALL\HALL_23.10332_Messung.csv')
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.