はじめに
第5回は多次元配列です。第3回の多重ループの解説の際に2次元の配列は登場しましたが、今回は多次元配列自体の説明と、3次元4次元の例も解説します。
多次元配列とは
多次元配列とは、複数のインデックスを持った配列のことで、例えばエクセルの表であれば2次元配列とみなすことができます。
物理空間を離散化した格子データのシュミレーション、ピクセルデータを扱う画像処理、線形代数など様々な場面で活用されています。
多次元配列の解説
reshapeを使うか、ループを使って作成します。
具体例1(3次元配列をreshapeを用いて作成)
program threeDimensionalArrayDeclaration implicit none integer, dimension(3, 3, 3) :: cube = reshape([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27], [3, 3, 3]) print *, 'Cube:' print *, cube end program threeDimensionalArrayDeclaration
具体例2(4次元配列をreshapeを用いて作成)
program fourDimensionalArrayDeclaration implicit none integer, dimension(3, 3, 3, 3) :: hypercube = reshape([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81], [3, 3, 3, 3]) print *, 'Hypercube:' print *, hypercube end program fourDimensionalArrayDeclaration
具体例3(多重ループを用いて作成)
program threeDimensionalArrayDeclaration implicit none integer, dimension(3, 3, 3) :: cube integer :: i, j, k, count ! Initialize the cube using a counter count = 1 do i = 1, 3 do j = 1, 3 do k = 1, 3 cube(i, j, k) = count count = count + 1 end do end do end do print *, 'Cube:' print *, cube end program threeDimensionalArrayDeclaration
疑問点
「何次元までいけるの?」
利用可能なメモリ容量の範囲内で任意の次元がとれます。
「hypercube って何?」
日本語で超立方体といい、三次元空間での立方体を一般化した、高次元空間における胞体(多面体の概念を一般化したもの)のこと。
まとめ
今回は多次元配列について解説しました。内容自体は簡単で、活用の仕方が幅広く、重要なツールになりそうですね。
第6回はファイル操作です。
注意
このページは大学のFortranの授業の予習で書いています。
直観的な理解をメモしているだけなので、厳密なところでは誤りがあるかもしれません。