iOSアプリケーションにベクトル化されたコードを実装する目的で、Accelerateフレームワークを初めて使用しています。私はObjective CやCのベクタを使って作業することに関して決して何もしようとはしませんでした.Maclabの経験があるので、Accelerateを使用するのが本当に苦痛であるのだろうかと思います。次のように計算したいとします。Accelerateフレームワークを使用したベクトルによる符号化
ここで、aとbはベクトルです。
MATLABコード:
a = 1:4;
b = 4*(sin(a/2)).^2;
私はドキュメントを通していくつかの唾の後にそれを見るようにしかし、物事は加速使ってかなり異なっています。
私のCの実装:
float a[4] = {1,2,3,4}; //define a
int len = 4;
float div = 2; //define 2
float a2[len]; //define intermediate result 1
vDSP_vsdiv(a, 1, &div, a2, 1, len); //divide
float sinResult[len]; //define intermediate result 2
vvsinf(sinResult, a2, &len); //take sine
float sqResult[len]; //square the result
vDSP_vsq(sinResult, 1, sqResult, 1, len); //take square
float factor = 4; //multiply all this by four
float b[len]; //define answer vector
vDSP_vsmul(sqResult, 1, &factor, b, 1, len); //multiply
//unset all variables I didn't actually need
正直なところ、私はここで最悪だか分からない:全く異なる(引数はVECLIBに関してVDSPに渡される方法を暗記しようとすると、すべての中間ステップを追跡します)、それは非常に些細なことをするのにとても時間がかかります。
私は本当にここに何かが足りないと思っています。そして、ほとんどの手順を統合したり短縮したりできます。コーディングリソース、良いコーディング習慣(難しいやり方を学んだり、本から習得したことなど)に関する推奨事項は大歓迎です!どのようにベクトル計算の複数の行を扱っていますか?
単純な除算を実行するために、このライブラリにポインタで渡された変数に2が必要な場合は、ライブラリがうまくいっていると思います。あるいは、あなたが使っていないベクトル以外の部分があるかもしれません。 – Shahbaz