[ios8] 新たな線形代数ライブラリ linear algebra

Post on 02-Dec-2014

3.260 Views

Category:

Mobile

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

2014/09/18 ios8勉強会セッション、『新たな線形代数ライブラリ Linear Algebra』の発表資料

TRANSCRIPT

Copyright © Classmethod, Inc.

新たな線形代数ライブラリ!Linear Algebra

Classmethod Inc!安達勇一

1

Copyright © Classmethod, Inc.

自己紹介

• iPhone アプリ・サービス事業部!

• iOS歴二年半!• 物理系出身!• 最近はサーバサイドでWebAPIを作ったり、AWSをいじったり

2

Copyright © Classmethod, Inc.

線形代数 is 何

3

Copyright © Classmethod, Inc.

線形代数 is 何

代数学の重要な部門で、 応用の広い線形空間の理論         - 岩波数学辞典 第三版

4

Copyright © Classmethod, Inc. 5

Copyright © Classmethod, Inc. 6

線形代数 @iOS

• UIViewのtransformはCGAffineTransform!

• 3x3の行列で回転、拡大、平行移動を表す。!

• CIImageでの画像フィルタリングでは行列を使える。

Copyright © Classmethod, Inc.

連立方程式を解く

7

x+ 4y + 5z = 3

2x+ 3y � 6z = 10

5x+ 7y � 11z = 13

Copyright © Classmethod, Inc.

連立方程式を解く

8

0

@1 4 52 3 �65 7 �11

1

A

0

@x

y

z

1

A =

0

@31013

1

A

Copyright © Classmethod, Inc.

連立方程式を解く

9

let mat =la_matrix_from_double_buffer( [1, 4, 5, 2, 3, -6, 5, 7, -11], 3, 3, 3, la_hint_t(LA_NO_HINT), la_attribute_t(LA_DEFAULT_ATTRIBUTES))let vec =la_matrix_from_double_buffer( [3, 10, 13], 3, 1, 1, la_hint_t(LA_NO_HINT), la_attribute_t(LA_DEFAULT_ATTRIBUTES))let ans = la_solve(mat, vec)

Copyright © Classmethod, Inc.

連立方程式を解く

10

x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571

Copyright © Classmethod, Inc.

連立方程式を解く

11

x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571

普通に解くと !x = - 155 /14, y = 44 / 7, z = -31 / 14

Copyright © Classmethod, Inc.

New BLAS For iOS / OS X

• la_object_t !• 遅延評価!• etc…

12

Basic Linear Algebra Subprograms

Copyright © Classmethod, Inc.

la_object_t

• 行列、ベクトルを表すオブジェクト!• Objective-Cでのオブジェクトとして扱える!• ARCがメモリの面倒みてくれる!• Swiftでも使える

13

Copyright © Classmethod, Inc.

la_object_t

• バッファから生成!

• 単位行列を生成!

• 対角行列を生成

14

la_matrix_from_double_buffer

la_identity_matrix

la_diagonal_matrix_from_vector

Copyright © Classmethod, Inc.

la_object_t

• 内容をバッファに書き出し!

• サイズの取得!

• 大きさの取得

15

la_matrix_to_double_buffer

la_matrix_rows la_matrix_cols

la_norm_as_double

Copyright © Classmethod, Inc.

la_object_t

• 和・差!

• 内積・行列の積!

• 解を求める

16

la_sum la_difference

la_inner_product la_matrix_product

la_solve

Copyright © Classmethod, Inc.

遅延評価

• la_object_tの演算は実際には計算しない!• オブジェクト同士の関連が記録されていく!• 実際の計算発火タイミングはバッファ書き込み時

17

Copyright © Classmethod, Inc. 18

Copyright © Classmethod, Inc.

線形代数の様々な応用

• 2D/3D画像処理

19

Copyright © Classmethod, Inc.

線形代数の様々な応用

• 統計解析/パターン認識

20

Copyright © Classmethod, Inc.

線形代数の様々な応用

• クライアントサイドでのデータ前処理・フィルタリング

21

Copyright © Classmethod, Inc. 22

数学方面はコロコロAPIが変わらない!!一回覚えればつぶしが効く!

Copyright © Classmethod, Inc. 23

Copyright © Classmethod, Inc. 24

http://dev.classmethod.jp/references/ios-8-accelerate-framework

top related