MATLAB: データの作成

informatics/matlab/data_input
2018/11/10 更新

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

広告

MATLAB の基本ルール

> 文字列はシングルクォーテーション ' ' で囲む。ダブルクォーテーション " " は使わない (1)。

> コマンドの最後にセミコロンをつけると結果を表示しない (1)。

> 変数の名前: 最初の文字は英文字で,その後は英文字,数字,アンダースコアが使える (1)。最大 63 文字。大文字と小文字は区別され,漢字は使えない。

変数の作成

変数 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

コマンドで作成

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

  1. 小林 2014a. 最新 MATLAB ハンドブック 第五版. 秀和システム.