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

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

답변 (1개)

Atsushi Ohashi
Atsushi Ohashi 2020년 9월 25일
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

카테고리

Help CenterFile Exchange에서 MATLAB Coder에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!