Saturday 24 December 2011

scilab: analysing .wav files #3

続きとして,「有音と判定された部分を取り出す」ことを試みる.
取り敢えず, さっきの judge の値が 0 かそうでないかを手がかりにして,
切れ目を別の変数 cutpoint に記録してみる.
そこからデータを切り出すのはまた次の段階として.
この時, judge の最初,或いは最後が有音判定されてるとめんどくさい.
ここでは judge の最初に 0 を足したベクトル cuten を作ってそれを使い,
最後は別個に対処する(最後の if 文).

以下の部分は,直前の投稿 の最後の endfunction を切り取ったものに繋いで動かす.
実用的には, judge, sound1 とかをグローバル変数として定義し,
判定部,と,それを切り出す部分は別関数にするのが使いやすいだろうが,
グローバル変数を扱うのは初めてなので,一旦同じ関数に入れ込むことにしよう.
では,以下ソース.利用上の規約(笑)は前のと一緒でお願いします.
    a=input("INPUT 1 TO CONTINUE, OTHER VALUE TO RETURN")
    if a~=1 then return;
    end
    cuten=[0,judge];
    cutpoint=[];
    for i=2:length(cuten)
        if  cuten(1,i-1)==0 & cuten(1,i)~=0 then..
            cutpoint($+1,1)=i-1;
        elseif cuten(1,i-1)~=0 & cuten(1,i)==0 then..
            cutpoint($,2)=i-1;   
        end
    end
    if cutpoint($,2)==0 then cutpoint($,2)=length(judge);
    end
    disp(cutpoint);
endfunction
途中アホなことを(cutpoint の最初を切ってみたり)して debug に苦労したけど,
出力とグラフ見比べると,正しく動作しているようだ.

No comments:

Post a Comment