csvreadをMATLAB coderでコード生成するには

4 Ansichten (letzte 30 Tage)
koichi hashimoto
koichi hashimoto am 16 Sep. 2020
Beantwortet: Atsushi Ohashi am 25 Sep. 2020
3840*3841のcsvファイルを読み込みたいのですが
MATLABcoderではcsvreadがサポートされていないので使えません。
fopen,freadを使って読み込めるようですがその方法がわかりません。
プログラムでは読み込んだ後は倍制度配列にしています。
分かる方いらっしゃいましたらご教授願います。

Antworten (1)

Atsushi Ohashi
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

Kategorien

Mehr zu MATLAB Coder finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!