MATLAB Note/計算
Last-modified: 2014-12-06 (土) 06:56:20
Top / MATLAB Note / 計算
- 目次
四則演算をする †
- 参考:行列と配列について
+ 加算 - 減算 * 乗算 / 除算 \ 左除算 (左から右を割る) ^ ベキ乗 ' 複素共役転置
- 余りは rem(x,y) (XをYで割ったときの余り)
- 商は floor(x/y)
- 平方根(ルート)は sqrt(X)
- 実行例
>> 1 + 2 %足し算 ans = 3
>> 5 - 3 %引き算 ans = 2
>> 3 * 10 %掛け算 ans = 30
>> 5 / 10 %割り算 ans = 0.5000
>> 5 \ 10 %割り算 (左から右を割る) ans = 2
>> 2 ^ 4 %べき算 ans = 16
- ベクトル同士の四則演算
- 以下の配列A,Bを使って説明します。
>> A = [1 2 ; 3 4] A = 1 2 3 4 >> B = [-1 -2 ; -3 -4] B = -1 -2 -3 -4
- 以下の配列A,Bを使って説明します。
>> A + B ans = 0 0 0 0
>> A - B ans = 2 4 6 8
>> A * B ans = -7 -10 -15 -22
>> A .* B %行列の各要素同士の演算 ans = -1 -4 -9 -16
>> A / B ans = -1 0 0 -1
>> A ./ B %行列の各要素同士の演算 ans = -1 -1 -1 -1
配列を宣言する †
- 配列(ベクトル)の値を指定して宣言
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] %4行4列の配列Aを宣言 A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
- 行列と魔方陣:行列と配列 (MATLAB公式) より引用しました。
- 配列(ベクトル)を自動生成する
>> A = 1:10 %1から10までの整数を含む行ベクトルを作成 A = 1 2 3 4 5 6 7 8 9 10 >> A = 100:-7:50 %100から50まで、-7おきに行ベクトルを作成 A = 100 93 86 79 72 65 58 51
- ゼロ行列を作る
>> Z = zeros(2,4) %2行4列のゼロ行列 Z = 0 0 0 0 0 0 0 0
- 単位行列を作る
>> F = ones(3,3) %3行3列の単位行列 F = 1 1 1 1 1 1 1 1 1 >> F = 5 * ones(3,3) F = 5 5 5 5 5 5 5 5 5
- 一様分布(ランダム分布)する要素からなる行列
>> N = fix(10*rand(1,10)) N = 9 2 6 4 8 7 4 0 8 4 ※値は実行するたびに変わります。(注:再起動後は同じ値が選択されます!) ※FIX(X)は、Xの要素をゼロ方向の最も近い整数に丸めます。(小数点以下切り捨て)
- 正規分布する要素からなる行列
>> R = randn(4,4) R = -0.4326 -1.1465 0.3273 -0.5883 -1.6656 1.1909 0.1746 2.1832 0.1253 1.1892 -0.1867 -0.1364 0.2877 -0.0376 0.7258 0.1139
配列を操作する †
- 以下の配列Aを使って説明します。*1
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
- 配列のサイズを取得
>> size(A) ans = 4 4 >> length(A) %行の長さ、列の長さのうち、大きいほうを出力 ans = 4
- Aの各列を合計
>> sum(A) %各列を合計 ans = 34 34 34 34 >> sum(A,1) %(別のやり方)Aの1次元成分の合計 ans = 34 34 34 34
- 行と列を入れ替え
>> A' %主対角に対して行列を入れ替え(行ベクトルを列ベクトルに) ans = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
- Aの各行を合計( = 入れ替えた後の各列を合計)
>> sum(A') %各行を合計 ans = 34 34 34 34 >> sum(A')' %行として出力 ans = 34 34 34 34 >> sum(A,2) %(別のやり方)Aの2次元成分の合計 ans = 34 34 34 34
- 配列を90度反転
>> rot90(A) %配列を90度反転 ans = 13 8 12 1 2 11 7 14 3 10 6 15 16 5 9 4
- 主対角要素を取り出す
>> diag(A) ans = 16 10 7 1
- 指定要素を取り出す
>> A(1:3,2) %A の 2 番目の列の最初から 3 番目までの要素を取り出す ans = 3 10 6 >> A(2:end,2) %A の 2 番目の列の 2 番目から最後までの要素を取り出す ans = 10 6 15
- 指定要素を検索/入れ替える
>> k = find( A < 5 ) %配列Aの要素のうち、5以下の値の位置番号を出力する k = 4 5 9 16 ※関数 find は、与えられた論理条件になる配列要素のインデックスを決めます。 ※位置番号は、4行4列の配列Aの場合、 [ 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 ] となります。 >> A(k) %k により決められた順番で実際の値を表示 ans = 4 3 2 1 >> A(k) = NaN %kにより取り出された位置番号の値をNaNに入れ替える A = 16 NaN NaN 13 5 10 11 8 9 6 7 12 NaN 15 14 NaN
- 配列を結合する
>> B = [A A; A A] %4つの小行列Aを連結した8行8列の行列Bを作成 B = 16 3 2 13 16 3 2 13 5 10 11 8 5 10 11 8 9 6 7 12 9 6 7 12 4 15 14 1 4 15 14 1 16 3 2 13 16 3 2 13 5 10 11 8 5 10 11 8 9 6 7 12 9 6 7 12 4 15 14 1 4 15 14 1
- 指定した要素を削除する
>> X = A; %配列Aの中身を配列Xにコピーする >> X(:,2) = [] %Xの2番目の列を削除 X = 16 2 13 5 11 8 9 7 12 4 14 1
- 配列をソートする
>> sort(A) %各列の行成分を並べ替え(昇順) ans = 4 3 2 1 5 6 7 8 9 10 11 12 16 15 14 13 >> sort(A,'descend') %各列の行成分を並べ替え(降順) ans = 16 15 14 13 9 10 11 12 5 6 7 8 4 3 2 1
基本統計計算 †
- 以下の配列dataを使って説明します。
>> data = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12] data = 1 2 3 4 5 6 7 8 9 10 11 12
- 平均値
>> mean(data) %各列の平均を求める ans = 5 6 7 8 >> mean(data')' %各行の平均を求める ans = 2.5000 6.5000 10.5000
- 中央値
>> median(data) %各列の中央値を出力 ans = 5 6 7 8 >> median(data(:,3)) %3列目の中央値を出力 ans = 7 >> median(data(1,:)) %1行目の中央値を出力 ans = 2.5000 >> median(data(1:2,:)) %1,2行目の各列の中央値を出力 ans = 3 4 5 6
- 標準偏差
>> std(data) %各列の標準偏差を出力 ans = 4 4 4 4
- 分散
>> var(data) %各列の分散値を出力 ans = 16 16 16 16
- 共分散
>> cov(data) ans = 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16
- 相関係数
>> corrcoef(data) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
- 標本範囲(最大値と最小値間の差)
>> data2 = [1 3 5 9 ; 2 3 7 1; 1 5 7 4] %ここで使うデータセットを宣言 data2 = 1 3 5 9 2 3 7 1 1 5 7 4 >> range(data2) ans = 1 2 2 8
- 平均値
- 欠損値があるとき
>> dataNaN = [1 2 NaN 4 ; NaN 6 7 8 ; 9 10 11 NaN] %ここで使うデータセットを宣言 dataNaN = 1 2 NaN 4 NaN 6 7 8 9 10 11 NaN %欠測値を無視した場合の最大値 >> nanmax(dataNaN) ans = 9 10 11 8 %欠測値を無視した場合の平均値 >> nanmean(dataNaN) (結果は省略) %欠測値を無視した場合の中央値 >> nanmedian(dataNaN) %欠測値を無視した場合の最小値 >> nanmin(dataNaN) %欠測値を無視した場合の標準偏差 >> nanstd(dataNaN) %欠測値を無視した場合の和 >> nansum(dataNaN)
- find関数でNaNを検出する方法
- 関数 isnan を使う。