MATLAB

MATLABで離散フーリエ変換

博士の愛したかもしれない数式 - 周波数と駒で言及した という式をMATLABで計算したいとする。ここでととはそれぞれ離散時刻と入力信号と窓関数である。 for文を使って定義をなぞるとこうなる(ただし窓関数は省略することにする)。 D = 8; %dimension rng(…

printf

愛用しているMATLABであるが、この言語、printfという名前の関数がない。コマンドウィンドウに値などを出力したいときには、行の末尾にセミコロンをつけないのが最も簡単な方法となる。 例えば、 a = 1; %出力されない a = 1 %以下出力 a = 1 といった具合で…

MATLABで内積

列ベクトルaと列ベクトルbがあり、それらの次元数が同じだったとする。 このとき、定義をなぞるようにfor文を使って内積を計算すると、こんな感じになる。 a = [1; -2; 3]; b = [6; 5; -4]; N = 3; %the number of dimension p = 0; for n = 1 : N p = p + a…

MATLABで三角関数と対数

MATLABで三角関数を扱うのは簡単である。 cos(pi/3) ans = 0.5000 などと書けばいい。 一周期描きたいならば、 x = 1 : 100; t = 2 * pi * x / 100; s = cos(t); plot(s) などとすると、下の図のような正弦波が描ける。上記スクリプトの中の「:」は、Python…

MATLABで複素数

MATLABといえば行列演算であるが、そのほかに簡単に複素数が扱えるという特長がある。 a = 1 + i b = 2 - 2 * i a = 1.0000 + 1.0000i b = 2.0000 - 2.0000i といった具合である。 足し算やかけ算はこうなる。 a + b ans = 3.0000 - 1.0000i a * b ans = 4 …

MATLABで行列

MATLABといえば行列計算である。単なる二次元配列ではなく、MATLABにおいて変数といえば基本的に行列である。 行列の生成はこんな感じである。 a = [0, -1; 1, 2] b = [1, 2; 3, 5] これで以下のような行列が生成される。 a = 0 -1 1 2 b = 1 2 3 5 足し算は…

MATLABで音声読み込み

MATLABで ".wav" の音響ファイルを読み込むにはこうする。 s = audioread('test.wav'); "test.wav" の中身が変数 "s" に代入される。MATLABの変数は基本的に行列なので、 "s" には(信号の長さ)×(チャネル数)の行列の形式で振幅データが入る。 波形をプロ…

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

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

MATLABでハローワールド

学生の頃から慣れ親しんでいるMATLABであるが、最近になってアルファベット以外の文字を使い始めた。その際、Windows版のMATLABではUTF-8で書いた文字が文字化けしてしまっていた。Shift-JISでコードを書かないと文字化けするようであった。 そのあたりのこ…