リファレンスの応用 〜多次元配列を扱う〜
多次元配列などというと小難しい印象を受けますが,要するに行列を扱うということです。行列の計算は統計学(特に多変量解析)でもよく使うので,多次元配列を扱えるとプログラムを作成していく上でとても役に立つはずです。
1. 多次元配列を作って表示させてみる
@dim=( [1,2,3], [4,5,6], [7,8,9]); print "$dim[0][0] \n"; #0行0列の要素を表示 print "$dim[1][2] \n"; #1行2列の要素を表示
0,0
---
10,1
---
20,2
---
31,0
---
41,1
---
51,2
---
62,0
---
72,1
---
82,2
---
9
さて,一見するとリファレンスとは関係ないようにも見えますが,上のプログラムは次のようにしているのと同じことです。また,多次元配列を作る方法は何通りかありますが上記のやり方が最も簡単で分かり安いのでこれ1つを覚えておけば十分でしょう。
#3つのベクトルを用意する @dat1=(1,2,3); @dat2=(4,5,6); @dat3=(7,8,9); #各ベクトルのアドレスを@dimへ代入 @dim=(\@dat1,\@dat2,\@dat3); $ref1=$dim[0]; #$dim[0]には@dat1のアドレスが格納されているのでそれを$ref1へ代入 $ref2=$dim[1]; $ref3=$dim[2]; print $$ref1[0],$$ref1[1],$$ref1[2];print "\n"; #参照している値へアクセス(デリファレンス) print $$ref2[0],$$ref2[1],$$ref2[2];print "\n"; print $$ref3[0],$$ref3[1].$$ref3[2];print "\n";
2. 行列の計算(足し算)をしてみる
@A=( [1,2], [3,4]); @B=( [5,6], [7,8]); for($i=0;$i<2;$i++){ for($k=0;$k<2;$k++){ print $A[$i][$k]+$B[$i][$k]; print "\t"; } print "\n"; }