MATLAB: データの作成

2018/11/10 Last update

 

このページは MATLAB データの作成 @本家UBサイト に恒久的に移転しました。このページもネット上に残っていますが、最新の情報はリンク先を参照して下さい。

 


  1. 変数の作成
  2. 行列の作成
    1. Excel からの読み込み
    2. Command Window 上で作成

関連項目



変数の作成


変数 variable を作成するには,= で値を代入すれば良い。なお,R では = のほかに矢印 <- も使うことができるが,このサイトでは混乱を防ぐために原則として = を使う。

 

また,C 言語や Java 言語では,代入の前に変数の宣言を行う必要があるが,MATLAB ではその必要はない(1)。


最もシンプルな例を下に示した。>> a = 1 で変数 a に 1 を代入すると,自動的に代入の結果が表示される。

 

これは少々うっとおしいので,>> b = 2; のように行末にセミコロンをつけると結果が表示されなくなる。Workspace に変数の一覧が表示されているので見てみよう。>> a + b で,計算の結果が表示される。

>> a=1

 

a =

     1

 

>> b=2;

>> a+b

 

ans =

     3


Excel からの読み込み


右の図のような Excel シートがあるとする。まず,このシートが保存されているフォルダに移動し,ダブルクリックでこのファイルを開くと,インポート用のウィンドウが開く。インポート用の重要なパラメーターは以下の通り。

 

読み込み範囲の設定

読み込みたい範囲を選択する。

 

変数の型の設定

列の名前は,Excel ファイルを開いた時点で一番上の行の名前になっている。他の行にしたい場合は,Variable Names Row で変更する。

1行目で変数の型を設定することができる。とりあえず Group と Gender は Cell, Weight と Height は Number にしておく。

 

変数の形式の設定

Column vectors, Matrix, Cell Array, Table から選択することができる。まずは Column vectors を選んでみる。

Group Gender Weight Height
Smoke M 68.2 175
Smoke M 75.1 172
Smoke M 77.7 178
Smoke F 48.0 157
Smoke F 56.7 153
Smoke F 54.3 149
Non-smoke M 55.1 179
Non-smoke M 48.9 172
Non-smoke M 51.0 169
Non-smoke F 42.0 160
Non-smoke F 40.6 155
Non-smoke F 41.1 152

Workspace に,このように変数が追加されるはずである。>> Gender などで,変数の中身を確認できる。

 

  • plot 関数で,体重と身長の散布図を書いてみる。

Command Window 上で作成

  • magic
  • rand, randn
  • normrnd

MATLAB では行列が基本となるデータ形式なので,行列を作るための関数がたくさん用意されている。


ここでは,Command Window を利用した行列の作り方を解説する。

 

 


数値の代入


横の行列と縦の行列は,次のように作成する。

 

>> x=[1 1 2 2 3 3]

 

x =

     1     1     2     2     3     3

 

 

>> y=[1;1;2;2;3;3]

 

y =

     1

     1

     2

     2

     3

     3

 

つまり,セミコロンが改行を意味する。これを考えると,複数の行および列をもつ行列 z は

 

>> z=[1 1;2 2;3 3]

 

z =

     1     1

     2     2

     3     3

 

のようになる。

 

 

関数の使用


magic 関数で,魔方陣の行列を作ることができる。>> magic (n) で,n x n 行の魔方陣ができる。

 

>> A=magic(5)

A =

    17    24     1     8    15

    23     5     7    14    16

     4     6    13    20    22

    10    12    19    21     3

    11    18    25     2     9

 
なお,単に >> magic(5); とすると,ans という変数として行列が workspace に保存される。この名前では,取り扱いがのちのち面倒になる。たとえば,次に何かのコマンドを実行したときの結果も ans として与えられるので,ans が上書きされてしまうためである。その例を見てみよう。
 
>> magic(3)
ans =
     8     1     6
     3     5     7
     4     9     2
 
% 無事に ans という魔法陣の行列を作ることができた。各要素を 3 倍してみると・・・
 
>> ans*3;
>> ans
ans =
    24     3    18
     9    15    21
    12    27     6
 
% となり,元の ans が消えて(上書きされて)しまった。
 
これを避けるために,何かを作るときはとりあえず A とか B とかに代入しておくのが基本である。
 

rand 関数で,乱数の行列を作ることができる。>> rand(n) で n x n 行の行列を作るパターンと,>> rand(m,n) で m 行 n 列の行列を作るパターンがある。

 

>> rand(5)
ans =
    0.0292    0.2373    0.2316    0.3674    0.7962
    0.9289    0.4588    0.4889    0.9880    0.0987
    0.7303    0.9631    0.6241    0.0377    0.2619
    0.4886    0.5468    0.6791    0.8852    0.3354
    0.5785    0.5211    0.3955    0.9133    0.6797

>> rand(1,3)
ans =
    0.1366    0.7212    0.1068

 

 


normrnd 関数で,正規分布 normal distribution に従う乱数の行列を作ることができる。>> normrnd(mean,sd,row,column) である

 

>> B=normrnd(2,1,5,10)

B =
    1.8048    2.1832    1.4680    0.9358    2.3919
    1.7824    0.9702    3.6821    3.6035    0.7493
    1.6969    2.9492    1.1243    3.2347    1.0520
    2.0230    2.3071    1.5162    1.7704    1.2589
    2.0513    2.1352    1.2880    0.4938    1.4922
    2.8261    2.5152    0.8258    1.5554    1.6794
    3.5270    2.2614    1.8078    1.8441    2.0125
    2.4669    1.0585    1.7259    2.2761   -1.0292
    1.7903    1.8377    3.5301    1.7388    1.5430
    2.6252    1.8539    1.7510    2.4434    3.2424


References