[iOS8] 新たな線形代数ライブラリ Linear Algebra

25
Copyright © Classmethod, Inc. 新たな線形代数ライブラリ Linear Algebra Classmethod Inc 安達勇一 1

description

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

Transcript of [iOS8] 新たな線形代数ライブラリ Linear Algebra

Page 1: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

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

Classmethod Inc!安達勇一

1

Page 2: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

自己紹介

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

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

2

Page 3: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

線形代数 is 何

3

Page 4: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

線形代数 is 何

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

4

Page 5: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 5

Page 6: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 6

線形代数 @iOS

• UIViewのtransformはCGAffineTransform!

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

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

Page 7: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

連立方程式を解く

7

x+ 4y + 5z = 3

2x+ 3y � 6z = 10

5x+ 7y � 11z = 13

Page 8: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

連立方程式を解く

8

0

@1 4 52 3 �65 7 �11

1

A

0

@x

y

z

1

A =

0

@31013

1

A

Page 9: [iOS8] 新たな線形代数ライブラリ Linear Algebra

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)

Page 10: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

連立方程式を解く

10

x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571

Page 11: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

連立方程式を解く

11

x = -11.0714285714286 y = 6.28571428571428 z = -2.21428571428571

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

Page 12: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

New BLAS For iOS / OS X

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

12

Basic Linear Algebra Subprograms

Page 13: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

la_object_t

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

13

Page 14: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

la_object_t

• バッファから生成!

• 単位行列を生成!

• 対角行列を生成

14

la_matrix_from_double_buffer

la_identity_matrix

la_diagonal_matrix_from_vector

Page 15: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

la_object_t

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

• サイズの取得!

• 大きさの取得

15

la_matrix_to_double_buffer

la_matrix_rows la_matrix_cols

la_norm_as_double

Page 16: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

la_object_t

• 和・差!

• 内積・行列の積!

• 解を求める

16

la_sum la_difference

la_inner_product la_matrix_product

la_solve

Page 17: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

遅延評価

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

17

Page 18: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 18

Page 19: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

線形代数の様々な応用

• 2D/3D画像処理

19

Page 20: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

線形代数の様々な応用

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

20

Page 21: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc.

線形代数の様々な応用

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

21

Page 22: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 22

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

Page 23: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 23

Page 24: [iOS8] 新たな線形代数ライブラリ Linear Algebra

Copyright © Classmethod, Inc. 24

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

Page 25: [iOS8] 新たな線形代数ライブラリ Linear Algebra