【iOS】行列計算,ベクトル処理ライブラリを使ってみた
iOSでベクトルや行列を処理できるライブラリを探しているとAccelerate.frameworkに提供されている事が分かったので早速使ってみた。因みに今回使う機能はiOS8以上が対象なので注意が必要です。
今回はObjective-Cでのサンプル
#import <Accelerate/Accelerate.h>
double x[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; la_object_t matX = la_matrix_from_double_buffer(x,3,3,3,LA_NO_HINT,LA_DEFAULT_ATTRIBUTES); double y[] = { 4, 5, 6, 1, 2, 3, 7, 8, 9 }; la_object_t matY = la_matrix_from_double_buffer(y,3,3,3,LA_NO_HINT,LA_DEFAULT_ATTRIBUTES);
まずは2つの行列をこんな感じで用意してみる。
引数に行列の情報や計算に必要なヒント、属性なんかを指定して初期化できる。
double z[] = { 1, 2, 3 }; la_object_t matZ = la_matrix_from_double_buffer(z,3,1,1,LA_NO_HINT,LA_DEFAULT_ATTRIBUTES);
ちなみに行3列1とかだとこんな感じ。
la_object_t matXY = la_matrix_product(matX, matY); double buf[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; la_matrix_to_double_buffer(buf, la_matrix_cols(matXY), matXY); // buf[]をLog出力する // 27.0 33.0 39.0 // 63.0 78.0 93.0 // 99.0 123.0 147.0
行列同士で積を求めてみる。
ほかにも色々とできそうだけど、とりあえずここまで。