csvreadをMATLAB coderでコード生成するには
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
3840*3841のcsvファイルを読み込みたいのですが
MATLABcoderではcsvreadがサポートされていないので使えません。
fopen,freadを使って読み込めるようですがその方法がわかりません。
プログラムでは読み込んだ後は倍制度配列にしています。
分かる方いらっしゃいましたらご教授願います。
0 Kommentare
Antworten (1)
Atsushi Ohashi
am 25 Sep. 2020
fopen, fgetlを使ってCSVファイルを読み込むサンプルになります。
1行ずつファイルからデータを読み込んで、カンマで文字列を分割したあと、数値へ変換しています。
下記のコードをMATLAB Coderで実行はできました。C言語でCSVの読み込み例は多くあるようですので、MATLAB Coderでの実現が難しそうであれば、データの読み込み部分はC言語で、それを使った解析のアルゴリズム部分をMATLAB Coderでコード生成する手段もあるかと思います。ご参考になれば幸いです。
test.csvデータ
-10.00,2.00,30.96
-12.00,2.00,42.33
csvreadに該当する関数
function M = csvreadFunc() %#codegen
fid = fopen('test.csv', 'r');
M = zeros(2, 3);
for r = 1: 2 % 3840
d = fgetl(fid);
[dt, rem] = strtok(d, ',');
v = str2double(dt);
M(r, 1) = real(v);
for c = 2: 3 % 3841
[dt, rem] = strtok(rem, ',');
v = str2double(dt);
M(r, c) = real(v);
end
end
fclose(fid);
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!