配列変数の作成

  • by

変数に入れらる値は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

次は、今回作成した配列変数を使用して、簡単なプログラムを作る。その前にこの変数を保存する。