質問: csvreadをmatlab coderでコード生成するには 3840*3841のcsvファイルを読み込みたいのですが matlabcoderではcsvreadがサポートされていないので使えません。 fopen,freadを使って読み込めるようですがその方法がわかりません。 プログラムでは読み込んだ後は倍制度配列にしています。 分かる方いらっしゃいましたらご教授願います。
回答: 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