Matlab/Octave

Matlab/Octaveで平均律

単純なプログラムですが、MIDIノート番号を周波数に、周波数をMIDIノート番号とピッチベンド値(およびセント値)に変換するものを置いておきます。特に後者はあまり見かけないと思うので。デフォルト設定は、基準ピッチが440Hz、ベンドレンジは±2半音です。…

遺伝的アルゴリズム的な何かでフィルターを設計してみる(でもあまりうまくいかない)

アストロノーカで遊んで興味を持ったのが遺伝的アルゴリズム。その考え方を使ってフィルタ設計でもできないかと思ったので、とりあえずやってみました。中に出てくるbiquad_*は、Robert Bristow-Johnsonによるフィルター設計レシピの実装で、中心周波数やゲ…

ラウドネスの近似値計算

コンピュータの中にあるWAVファイルどうしの音量比較をしたいときはけっこうあります。音量の指標として「ラウドネス(sone)」があり、以前その計算プログラムも書いたのですが、その音を鳴らしたときの音圧値(dBSPL値)が分からないと正確な値が得られな…

Matlabで2次元プロット

論文に載せる2次元プロットを作成するとき、僕はMatlabを使って以下のような感じで書いています。多次元尺度法の分析結果を図にするときに相性がいいですよ。背景になる部品から順番に重ねていく必要があるので、まずは縦軸と横軸を書きます。grid onでグリ…

Matlab R2009b

Matlab R2009bからMac OS X版が64ビット対応になっていて良い感じ。もしかしたらそれ以前から64ビット対応していたのかもしれないけど、Snow Leopardで分かるようになりました。計算速度が大きく変化したような気はしませんが、64ビットだと言うだけで気持ち…

音の周波数特性を描くMatlabプログラム

音の周波数特性を描くMatlabプログラムを改善したので、メモ的に置いておきます。今回の目玉は「1/3オクターブごとの平均値を描くようにした」です。500-2000Hz帯の平均値が0dBになるようにスケーリングしています。

遺伝的アルゴリズムの簡単なテスト

以前から遺伝的アルゴリズムというものに興味を持っていたのですが、本を読むだけじゃなく実際に手を動かさなければ、ということでプログラムを書いてみました。勉強中のLISPで書きたいところでしたが、いちばん慣れているMatlabを使ってみました。の最大値…

シェッフェの一対比較法(中屋変法)のMatlabコード

研究で必要になったので、佐藤信『統計的官能検査法』(日科技連 1985年)を参考に、シェッフェの一対比較法(中屋変法)による分散分析を行うMatlabスクリプトを作りました。実のところ「参考にした」どころではなく、書いてあった手計算のアルゴリズムをそ…

Matlabソースの高速化のために

Matlabソースの高速化のためにできることのまず第一は、ループ(forやwhile)を少なくし、行列内の各々の要素にアクセスする頻度を少なくすることです。そのためにはコードのベクトル化(code vectorization)をしてやる必要があります。実はこの手法(code ve…

ロジットとプロビット

ロジットしか使ったことなかったのですが、プロビットも同じ目的で使えるのですね。どちらも独立変数が連続値で従属変数がブール値のときに、シグモイド関数を重回帰分析ではめる分析手法です。SPSSのページによると、違いは「ロジスティック関数を使うか正…

インパルス応答の分析(残響時間)

ほっしくんに指摘されたので、間違った情報(10月13日のエントリー後半)を修正すべく、プログラムを書きました。残響時間(RT60)は、「信号のエネルギーが60dB減衰するまでの時間」と定義されています。ISOではその定義を発展させて?現実の測定に即した形…

インパルス応答の分析(直間比)

昨日の続き。直接音と間接音のレベル比を計算します。ISO 3382という規格にclarityという物理指標が出てきます。インパルス応答の前半部分(直接音に対応)と後半部分(間接音に対応)のレベル比をdBで求めるもので、例えば以下のような式で表されます。この…

インパルス応答の分析(残響時間を求める)

Matlabで部屋のインパルス応答の分析をしています。分析するのには多種多様な方法があるのですが、まずは残響時間の計算ができて、直接音と間接音の比が求まれば、とりあえずの分析材料にはなります。残響時間を求めるために、以前作成した残響曲線の計算を…

Zoom H2で音源方向認識

Zoom H2というのは4chのPCM録音ができるポータブル・レコーダーなのですが、せっかく4つのマイク位置が固定になっているので、それを使って遊んでみようと思い、Matlabで非常に単純な方法で音源方向の認識を行うMatlabルーチンを作ってみました。H2には前方…

MatlabでMP3を読み書きする

MatlabでMP3を読み書きするルーチンが欲しくなって、作りました。無圧縮ファイルを使うほど音質重視じゃないけど、処理したいファイル数はたくさんある、という時にちょっと便利かもしれません。自分の環境のことしか考えてなかったので、Unix系でLAMEが入っ…