妙な達成感

MATLABを使った音声スペクトルの課題。
前回も書いたが、MATLABを持っている研究室に所属している学生(個人では所有していない前提)が有利になる課題だったので、非常にむかついたので、課題を提出しつつ講義の姿勢を示してやろうと考えていた。
いっそPythonとかJavagnuplotという組み合わせで解いたものを提出してやろうかとも思ったけど、そもそも「MATLABで」という指定があったので、見てもらう機会すらないかもしれないと考え、とりあえずMATLABで解いてみた。
先生は20行程度、と言っていたので、それより短いか、圧倒的に冗長に書いて提出してやろうと思ってみる。


短い版が完成。
5行ナリ

z = wavread('******.wav')'; % waveファイルの読み込み
zz = reshape([z, zeros(1,1024*(floor(length(z)/1024)+1) - length(z))],1024,floor(length(z)/1024)+1);% 一列の要素が1024の行列に変換。不足分は0で補う。
fzz = abs(fft(zz)) / max(max(abs(fft(zz)))); % フーリエ変換を行い、最大値=1として正規化
[X,Y] = meshgrid(1:floor(length(z)/1024)+1,1:1024); % 3次元描画の準備。x軸,y軸の単位を設定
mesh(X,Y,fzz); xlabel('フレーム番号'); ylabel('スペクトルの次数'); zlabel('フーリエ変換の結果(最大値=1で正規化)'); % 軸に名前をつけて結果を描画。

何故か妙な達成感。
少し溜飲が下がった。


そして、こんなことに時間を費やしている場合ではないことに気づく。
画像工学とクラスタリングの課題をやらねば。