私はmatlabからいくつかのSTLデータを書き込もうとしています.MEXファイル(Cで書かれたmatlab DLL)を書くことでこれをやろうとしています.フロートと。
...
for(m=0;m<colLen;m++)
{
res = m % 3;
if(res == 0)
{
fprintf(fp, "\tfacet normal %f %f %f \n",
normalValues[(x*nvcolLen)+0], normalValues[(x*nvcolLen)+1], normalValues[(x*nvcolLen)+2]);
fprintf(fp,"\t\touter loop\n" );
flag = 0;
x++;
}
fprintf(fp, "\t\t\tvertex ");
for(n=0;n<rowLen;n++)
{
fprintf(fp, "%f ", xValues[m*rowLen+n]);
}
fprintf(fp,"\n");
flag++;
if (flag == 3)
{
fprintf(fp, "\t\tendloop\n\tendfacet\n");
flag = 0;
}
}
...
これを MEX ファイルで実行したい主な理由は、コンパイルされてから処理速度が大幅に向上したためです。私は C++ の本「Sams Teach Yourself C++ in One our a day」を読んでいましたが、645 ページでバッファを使用してディスクへの書き込みを高速化する方法について説明しています。バッファがいっぱいになったら、データを書き込んでフラッシュし、もう一度実行します。それを行う方法に関するコードは実際には表示されません。これは C++ のストリームを使用したものです。
Cでこれにどのようにアプローチしますか? 固定サイズの char* バッファを作成し、それがいっぱいになったときにどうにかしてチェックし、fwrite() でファイルに書き込み、フラッシュして、最初からやり直しますか??