「行列」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「行列(ぎょうれつ、Matrix)とは、数字や文字を長方形(縦横)に並べたものです。横の並びを「行」、縦の並びを「列」と呼び、主にデータの構造化や計算に用いられます。 == プログラミングにおける行列の表現 == === 多次元配列で表現する === プログラミング言語では多次元配列で簡単に表現できます。 <source lang=csharp> var matrix = new float[2,2]; </source…」 |
Administrator (トーク | 投稿記録) |
||
| (同じ利用者による、間の5版が非表示) | |||
| 10行目: | 10行目: | ||
データの格納や単純なループ処理に向いています。 | データの格納や単純なループ処理に向いています。 | ||
ちなみに最近流行りの[[人工知能]]はこのフワッとした方式を[[内部DSL]]でカチッとしたデータ構造に変換するという方式が主流です。データ構造の変換処理という前準備で初速は遅くなりますが、人工知能では[[コンピュートシェーダー]]での処理時間が非常に長いので問題になりません。 | |||
=== 構造体で表現する === | === 構造体で表現する === | ||
| 58行目: | 57行目: | ||
これを把握せずに計算式をコピペすると残念な結果になります。行優先と列優先のデータが混ざると意図せず行列が転置(行と列が入れ替わる)されます。不具合の温床となるゴミみたいな争いです。 | これを把握せずに計算式をコピペすると残念な結果になります。行優先と列優先のデータが混ざると意図せず行列が転置(行と列が入れ替わる)されます。不具合の温床となるゴミみたいな争いです。 | ||
=== 行優先 (Row-major) === | |||
<source lang=csharp> | <source lang=csharp> | ||
public struct Float2x2 { | public struct Float2x2 { | ||
| 66行目: | 65行目: | ||
</source> | </source> | ||
「メモリ配置が簡単なため高速」という理由でプログラミング界隈で人気のある形式です。主に先にコンピューターおよびプログラミングを学び、その過程で仕方なく算数が必要になり学んだ人はこちらを推しています。「Z80のアセンブラは読めるが教科書の数式は読めない」という人種が[[力こそパワー]]でゴリゴリ普及させました。 | |||
* Direct3D (HLSL) | |||
* Python = NumPy | * Python = NumPy | ||
=== 列優先 (Column-major) === | |||
<source lang=csharp> | <source lang=csharp> | ||
public struct Float2x2 { | public struct Float2x2 { | ||
| 82行目: | 82行目: | ||
* Fortran | * Fortran | ||
* MATLAB | * MATLAB | ||
* | * OpenGL (GLSL) | ||
[[category: 算数]] | [[category: 算数]] | ||