変数に入れらる値は1だけではない。複数の値を入れたデータ構造を配列といい、それぞれの値を要素という。要素が1列に並んだ配列を1次元配列といい、MATLABでは1次元配列のことをベクトルと呼ぶ。ベクトルには要素を並べる方向が2種類あり、横方向に並べたものを行ベクトル、縦方向に並べたものを列ベクトルと呼ぶ。
配列変数
MATLABで変数に配列を作って代入するときは、半角スペースで区切った要素を「 [ ](ブラケット=角括弧)」でくくる。
>> array = [68 57 62 78 77] array = 68 57 62 78 77
「ワークスペース」パネルには変数arrayが作成されており、ダブルクリックすると要素が表示され、行ベクトルが作成されることが確認できる。
列ベクトルを作るときは、配列を改行するところに「 ;(セミコロン)」を入れる。
>> array = [68 57 62 78 77; 172 176 168 170 180] array = 68 57 62 78 77 172 176 168 170 180
変数の要素を表示すると、2行に分かれて要素が作成されていることが確認できる。変数名は変更しないとこのように上書きされる。
行列の転置
変数の行列を転置するときは「. ‘ (カンマ シングルクォーテーション)」、もしくは関数「transpose」を使う。以下は、既存の変数arrayの行列を操作し、Aという変数を別に作成した例。arrayを上書きする場合はAの箇所をarrayとする。
% コマンド構文を使う >> A = array.' A = 68 172 57 176 62 168 78 170 77 180 % 関数構文を使う 上記の変数Aの行列を転置して変数Bに >> B = transpose(A) B = 68 57 62 78 77 172 176 168 170 180
BMIを計算する
ここまでに作成した変数arrayを使い、BMIを計算するプログラムを書いてみる。条件は以下の通り。
・各列の要素をA~Eの各人を計測した値とする
・BMIの計算式は「BMI = 体重kg ÷ (身長m)2」である。
・配列変数の要素は「変数名(行,列)」とを指定する。
1行目を身長、2行目を体重とした場合の、AさんのBMIを求める計算式は以下のようになる。身長の値がcm単位になっているので、最初に100で割ってmに単位を揃えている。
A = array(1,1)/(array(2,1)/100)^2
A =
22.9854
次に、fprintf( )関数を使い、計算結果の書式を整えてコマンドウィンドウに表示する。( )内の記述の意味は以下の通り。
- 最初に表示先を指定する。ウィンドウに表示する場合は1を入力する。
- 表示する文字列は、「 ‘ ‘(シングルクォーテーション)」で囲む。
- 「%f」はデータをテキストに変換する書式演算子で、「%.1f」は小数点第一位以下を四捨五入するという設定(有効桁数制御)。
- 「\n」は改行を設定する。
- 最後に先に計算したBMI計算結果を代入した変数を指定する。
>> A = array(1,1)/(array(2,1)/100)^2; >> fprintf(1, 'Aさん:%.1f \n', A) Aさん:23.0
※1行目の末尾に付けた「;(セミコロン)」は、改行の度にans = ○○とか処理されなくするため。
関数roundを使う
BMIの計算式をroundの( )内入れることで小数点以下を四捨五入して丸めることができる。
A = round(array(1,1)/(array(2,1)/100)^2)
A =
23
書式を整える
fprintf( )関数を使い、計算結果をコマンドウィンドウに表示すると、小数点以下も表示されてしまう。
>> fprintf(1, 'Aさん:%.1f \n', A)
Aさん:23.0
そのため、%.1fを整数を表示する「%d」に書き換える。
>> fprintf(1, 'Aさん:%d \n', A) Aさん:23
次は、今回作成した配列変数を使用して、簡単なプログラムを作る。その前にこの変数を保存する。