2017-07-24 4 views
0

Ich habe ein MATLAB-Skript, das einen csvread Aufruf zum Einlesen von Daten aus einer CSV-Datei enthält. Jetzt versuche ich mein MATLAB-Skript mit MATLAB Coder in C zu kompilieren. csvread ist jedoch not a member of the supported functions für die C-Code-Generierung.csvread-Funktion von MATLAB-Codierer unterstützt

Die einzige Funktion, die ich aus der Datei gefunden habe, ist fread, die nur in Binärdatei liest. Gibt es eine Möglichkeit, fread zu verwenden, um eine CSV-Datei zu lesen, oder gibt es eine andere Möglichkeit?

Beispiel MATLAB-Skript:

data = csvread('data.csv'); 

CSV-Beispieldatei:

1 
2 
3 
4 

Antwort

3

Sicher, Sie in einer .csv Datei mit fread lesen können, müssen Sie nur es selbst verarbeiten. Nehmen wir an, Sie haben myfile.csv, enthält den Text 1, 2, 3, 4.

>> fid = fopen('myfile.csv','r'); 
>> a = fread(fid, 'char')' 
a = 
    49 44 32 50 44 32 51 44 32 52 13 10 
>> b = char(a) 
b = 
1, 2, 3, 4 
>> fclose(fid); 

Alle diese Befehle werden vom MATLAB Coder unterstützt. b ist jetzt eine Zeichenfolge mit dem Text 1, 2, 3, 4.

Sie müssen nun diese Zeichenfolge verarbeiten, um die Zahlen zwischen den Kommas zu extrahieren. Das ist der Teil von csvread, der von MATLAB Coder nicht unterstützt wird, da innerhalb von csvread reguläre Ausdrücke verwendet werden, die von MATLAB Coder nicht unterstützt werden.

Allerdings werden Sie wahrscheinlich finden es einfacher, als Sie vielleicht denken, da die regulären Ausdrücke innerhalb csvread haben den allgemeinen Fall für jede .csv Datei zu decken (die möglicherweise Textfelder sowie Zahlen enthalten, und Felder, die zitiert werden und kann Kommas innerhalb der Anführungszeichen und vielleicht sogar Unicode-Text haben. Wenn Sie nur Zahlen, Kommas und Leerzeichen haben, sollten Sie nicht zu hart sein - durchlaufen Sie den Text nur Buchstaben für Buchstabe, stoppen Sie jedes Mal, wenn Sie ein Komma finden, und rufen Sie str2double auf dem Teil bis jetzt.

Verwandte Themen