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

4 ビュー (過去 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 Center および File ExchangeMATLAB Coder についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!