MATLAB Answers

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

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

  0 Comments

Sign in to comment.

Answers (1)

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

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!