多次元配列 - multidimensional array(Fortran 第5回)

←第4回 書式設定
→第6回 ファイル操作

はじめに

第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の授業の予習で書いています。
直観的な理解をメモしているだけなので、厳密なところでは誤りがあるかもしれません。

←第4回 書式設定
→第6回 ファイル操作