関数をコンパイルしてより高速に実行できるように、MATLAB で記述されたコードを C に移植しようとしています (コードは非常に頻繁に実行され、速度が大幅に向上します)。
つまり、基本的に私の MATLAB コードは、行列を取得して文字列に変換し、角かっことコンマを追加して、テキスト ファイルに書き込むことができます。これがベクトル MyVec に対してどのように機能するかについてのアイデアは次のとおりです。
MyVec = rand(1,5);
NbVal = length(MyVec)
VarValueAsText = blanks(2 + NbVal*30 + (NbVal-1));
VarValueAsText([1 end]) = '[]';
VarValueAsText(1 + 31*(1:NbVal-1)) = ',';
for i = 1:NbVal
VarValueAsText(1+(i-1)*31+(1:30)) = sprintf('%30.15f', MyVec(i));
end
では、C で同様の結果を得るにはどうすればよいでしょうか。文字列 (char 配列) のサイズを事前に計算でき、メモリ領域に書き込む必要がある各要素の位置を知っているので、それほど難しくはないようです。関数もsprintf
C に存在します。しかし、これを設定する方法を理解するのに苦労しています。また、試行錯誤で簡単に学習できる環境がないためです (試行ごとに再コンパイルする必要があり、多くの場合、セグメンテーション違反と MATLAB のクラッシュ...)。
問題はおそらく些細に思えるかもしれませんが、誰かが助けてくれることを願っていますが、私はCの経験がほとんどなく、適切な例を見つけることができませんでした...