MATLABで行列

 MATLABといえば行列計算である。単なる二次元配列ではなく、MATLABにおいて変数といえば基本的に行列である。
 行列の生成はこんな感じである。

a = [0, -1; 1, 2]
b = [1, 2; 3, 5]

 これで以下のような行列が生成される。

a =
     0    -1
     1     2
b =
     1     2
     3     5

 足し算はこんな感じである。

a + b
ans =
     1     1
     4     7

 かけ算は、高校で習ったあの行列の積となる。

a * b
ans =
    -3    -5
     7    12

 要素ごとのかけ算もできる。

a .* b
ans =
     0    -2
     3    10

 逆行列はこうなる。

inv(b)
ans =
   -5.0000    2.0000
    3.0000   -1.0000

 aとbの積に、さらにbの逆行列をかけると、

a * b * inv(b)
ans =
   -0.0000   -1.0000
    1.0000    2.0000

aに戻る。

MATLABで音声読み込み

 MATLABで ".wav" の音響ファイルを読み込むにはこうする。

s = audioread('test.wav');

 "test.wav" の中身が変数 "s" に代入される。MATLABの変数は基本的に行列なので、 "s" には(信号の長さ)×(チャネル数)の行列の形式で振幅データが入る。
 波形をプロットする場合には、

s = audioread('test.wav');
plot(s)

とすればいい。
f:id:tihara:20200117181002p:plain
のような図が表示される(モノラル音声でない場合には多少事情が変わるが)。
 また、この図は少しマウスを操作するだけで下の図のように簡単に拡大できる。
f:id:tihara:20200117181038p:plain
 MATLAB、便利である。

曲紹介の『で』。

 先日、『MATLABでハローワールド』(MATLABでハローワールド - 日々のメモ)というエントリを書いたときに疑問に思ったのであるが、なぜラジオの曲紹介には歌手名と曲名の間に『で』が入るのか。
 たとえば、「それでは2曲続けてお聞きください。星野源で『アイデア』、AKB48で『365日の紙飛行機』」などというときの『で』である。
 文法的には「星野源の『アイデア』」のように、『の』が来そうな気もするが、これだとなぜかしっくりこない。やはり、『で』なのである。この『で』はどこから来たのか。
 「それではお聞きください。MATLABで『ハローワールド』」

計算終了

 さきほど、ずっと走らせていたプログラムがやっと計算を終えた。いつから走らせていたかを確認してみたら、10月18日ごろだった。長い道のりであった。
 そしてこれから時間をかけてそのプログラムの計算結果を読み解いていくのである。

 とりあえず、パソコンのファンがうるさい状況から逃れることができる。めでたい。

MATLABでハローワールド、パート2

 前回のエントリ(MATLABでハローワールド - 日々のメモ)で、日本語の文字コードのあたりのことをごちゃごちゃと書いたが、半角英数であれば文字の表示は難しいことではない。

disp('hello')

で済む。
 というか、

'hello'

でもいい。
 そもそもMATLABの得意分野は文字列演算ではなく行列演算なので、MATLABが正しく動くかどうかを試したいだけならば、

1 + 1

で、 "2" が出力されることを確認すればいい。