Wednesday 28 December 2011

winter vacation

とうとう冬休みがやってきた.28日まで授業があって新年4日から…やっけ?
まあ,来年のことは話さないとして(というか,冬休みの長さについて再確認もしたくないので),
細かい日付はおいておこう.
ともかく,クリスマスを過ぎて授業があり,新年も早くから授業がある.
これは異常事態で,今年なぜこういうことになっているのかはわからないけれども,
かなりの先生方がぼやくレベルに,珍しいことらしい.
京大やのにこんなに勤勉に授業やるなんて,という意見と,
京大やから別に定められた冬休みの長さとか関係ないやん,という意見があるが
(そして先生方ももう人来ないだろうなというか来なくていいよという雰囲気出しまくっておられるが),
その冬休みが,今日始まった.

とりあえずするべきなのは,年賀状を始めとする新年への準備,
そして1月提出のレポートをやっておくこと.
あとは,仏語をしたい.ついでに線形代数も.
仏語はひと通りの時制と法をやったので,あとは単語の知識をががっと増やすと
読むに当たってのストレスがずいぶん減るはず.
まずは Le petit prince かな.夏ごろから不真面目に英語版と並行しつつ眺めてるんだけれど,
精読,あるいは仏語版だけで読むようなことをしたい.

仏語の活用表作って眺めて,英語の何が対応するのかな,ということを考えてたら,
古英語の勉強をしたくなるのだけれども,これについては別記事にまとめたほうがあとから読みやすかろう.

周りの友人がどんどん帰省していく.僕は京都で新年を迎えることになるけれども,
京都から学生がどんどん全国に散って行ってるんやろな,というのを想像するとどこか楽しい.
住処が故郷になって,友達には「高校の」と但し書きがつくようになって,
日常が懐かしさにすり替わる瞬間は,誰も見ることができないのだろう.


しかしまさか大学に入ってこんなに冬休みが短くなるとは思わなかったよ!!!
2学期制やから冬休みはないもんや,と思ってた時期もあったけど.

Waterman の黒もなかなか色が冴えてていい.

Tuesday 27 December 2011

scilab analysing .wav #5

先だってのプログラムに,バグがあったらしい.
.sce の最初に global 変数を宣言したのだが,どうもそれを使う際にも(つまり各関数で値を入れるときにも)
global である旨宣言する必要があるらしく,
wavreader のはじめに
global sound1 fs time pow;
wavjudger の始めには
global judge;
wavcutter の初めに
globaol syllable;
が必要.
もともと入れてたのだが,これ抜いてもいけるんじゃね,とおもって書き換え,
コンパイルする前なのを忘れてそれをここに上げてしまった,というのが実情.

キーボード叩いてると手が冷える.PCもピアノも同じ.そんな季節である.

untitled

本来ならレポートを書かなくてはならないところなのだけれど,
先程から30分ほど, 雨音を聴きながら,手を眺めてぼうっとしてる.
何をするわけでもなく呼吸と時間の流れだけを眺めてた.
いやだからどうってこともないけど
でもこういうの好き.そらそうか,多分誰でもそうなんだろう.

噤むべきでないときに噤んでしまった口はそのうち喋り出す.

眠いんですわ,要するに.



それでも,昨日と今日は(日付的には一日ずれるけど) いい日.

Sunday 25 December 2011

Merry Christmas !

そうだ,皆さん, メリークリスマス.
 Although it's been said, many times, many ways ....
 Merry Christmas to you.
あなたと話したいことが,山ほどある.むしろ話を聞きたい.

scilab analysing .wav #4

この前の関数に手を加え,区切られた音ごとにデータを取り出すところまで伸ばした.
取り出されたデータはそれぞれ別にウィンドウ開いて波形が表示される(スキップも可能).
ただこれ全部一つの行列に収めたから,
音として区切られた部分の中で一番長いの以外は最後に0が意味なく並んだ部分ができる.
これも後で切りたいなぁ.


ついでに重要変数を global 化して,関数実行の後も使えるように.
さらに global 化したことによって,手順ごとに別の関数に分けることができるようになったので,
それも行った.また,「近傍」の長さを秒数で指定することもできるようにした.だいぶ良い感じ.
これが実際音を区切ったりするのに最終的に使えるかは別にして,
やってて楽しいし,少なくとも幾許かの練習にはなった.
あとは,取り出した音の分析とかをやりたいところですね.
今回のメモとしては,
  • global a b c d; で global 変数 a,b,c,dを宣言できる.
  • scf(i); で i 番目のグラフィックウィンドウで描画.
  • global の宣言は関数外でしないと無効(?)
あたりかな.では以下ソース.145行に及ぶので注意.

    //________________________________________________________
    //25th December 2011.copyright mutsuteru
    //(the author of the blog,http://lesguillemets.blogspot.com/ ,
    //and the one who is tweeting @exumbra_insolem)
    //all rights reserved.
    //Published for personal use only.
    //Sharing any outcome using this program or programs based on this
    //without explicit permission from the author is prohibited.
    //Well, I love this kind of statement.. lol
    //___________________________________________________________
    //
    // README:
    // the global variables are as follows:
    //   i) defined in function wavreader
    //     sound1   : the .wav file, read by wavread command.
    //     fs       : the sampling rate of the .wav file.
    //     pow      : = sound1^2 .
    //  ii) defined in function wavjudger
    //      judge   : a vector.
    //                its components correspond to those of sound1.
    //                0 for silence, nonzero for sound.
    // iii) defined in function wavcutter
    //      syllable: records each 'syllable'.
    //____________________________________________________________
global sound1 fs time pow judge syllable;
function wavreader
    a=input("INPUT 1 TO clf, OTHER VALUE TO CONTINUE WITHOUT clf")
    if a==1 then clf;
    end
    [sound1,fs,nbits] = wavread(input("FILE?"));
    time=length(sound1)/fs;
    printf("sampling rate = %d",fs);
    printf("the length of the file in second = %f",time);
    if size(sound1,"r")==2 then..
        sound2=sound1(2,:);
        sound1=sound1(1,:);//for stereo sound
    end
    disp("NOW PLOTTING THE WAV FILE....");
    plot2d(sound1);//this program fill handle sound1 only.
    disp("CALCULATING THE 2ND POWER OF THE .WAV...")
    pow=sound1^2;
    disp("OK.END OF FUNCTION.")
endfunction
//_______________________________________
function wavjudger
    //this function judges the sound+ areas.
    //requires sound1, fs, time, pow as global variables.
    //those are defined in function wavreader.
    //defines judge as a global variable.
    a=input("INPUT 1 TO CONTINUE(DEFAULT), 2 TO clf THEN CONTINUE ..
    3 TO clf, plot sound1 AND CONTINUE");
    select a,
        case 2 then clf;
        case 3 then..
            clf;
            disp("PLOTTING sound1....")
            plot2d(sound1);
    end
    printf("NOW WE NEED THE DEFINITION OF <NEIGHBOUR>.\n..
        SELECT THE WAY TO SPECIFY.\n..
              INPUT 1 TO SPECIFY BY TIME.\n..
              INPUT 2 TO SPECIFY BY THE RATIO TO THE WHOLE .WAV.");
    while %T,..       
        a=input("INPUT?")
        select a,
            case 1 then..
                printf("THE SAMPLING RATE IS %d\n",fs);
                printf("THE LENGTH OF THE FILE IS %f sec\n",time);
                s=input("INPUT THE TIME (IN SEC) WIDTH OF NEIGHBOUR.")
                chop=fs*s;
                break;
            case 2 then..
                printf("THE SAMPLING RATE IS %d\n",fs);
                printf("THE LENGTH OF THE FILE IS %f sec\n",time);
                n=input("HOW MANY CUTS? PLEASE INPUT.")
                chop=length(pow)/n;
                break;
            else..
                disp("UNEXPECTED VALUE.PLEASE INPUT AGAIN.")
        end
    end   
    threshold=input("THE  THRESHOLD?")
    judge=zeros(pow);   
    showjudge=max(sound1);
    disp("NOW JUDGING....PLEASE WAIT....");
    for i=1:length(pow)
        if.. 
          mean(pow(max(i-chop/2,1):min(i+chop/2,length(pow))))..
          >threshold..
            then judge(1,i)=showjudge;
        end
    end
    disp("FINISHED. NOW PLOTTING.....")
    plot2d(judge);
    disp("OK. END OF FUNCTION.");
endfunction
//____________________________________________________
function wavcutter
    //requires sound1, judge as global variables.
    //produces syllable as a global variable.
    cuten=[0,judge];
    cutpoint=[];
    disp("NOW FINDING THE 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);
    disp("NOW CONTINUE. I WILL GET THE DATA FOR YOU.")
    disp("THE DATA WILL BE COLLECTED IN VARIABLE syllable.")
    a=input("OK? IF NOT, INPUT 0.")
    if a==0 then return;
    end
    disp("OK.PRODUCING syllable....");
    syllable=[];
    for i=1:size(cutpoint,"r")
        syllable($+1,1:1+(cutpoint(i,2)-cutpoint(i,1)))..
        =sound1(cutpoint(i,1):cutpoint(i,2));
    end
    disp("NOW PLOT EACH SYLLABLE. OK ? ");
    a=input("INPUT 0 TO RETURN.");
    if a==0 then return;
    end
    for i=1:size(syllable,"r")
        scf(i);
        plot2d(syllable(i,:));
    end
    disp("END OF FUNCTION.")
endfunction
function wavreadjudgecut
    wavreader;
    a=input("INPUT 1 to CONTINUE");
    if a~=1 then return;
    end
    wavjudger;
    a=input("INPUT 1 TO CONTINUE.");
    if a~=1 then return;
    end
    wavcutter;
endfunction
scf(i) 使った for 文の所で, グラフィックウィンドウが次々開くのはなかなか壮観である.
ちなみに,切れたやつを
playsnd(syllable(i,:),fs)
で再生していくと,割合母音に対応して切れてて楽しかった.

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 に苦労したけど,
出力とグラフ見比べると,正しく動作しているようだ.

Friday 23 December 2011

scilab: analysing .wav #2

scilab でちょっと前にやった,(主に声の録音を想定して).wav から有声部を判定するのを,
もうちょっと整備して一つの関数の形にした.主な変更点は
  • 関数の形にした.
  • 読み込む音声ファイルを入力して選べるように改善.
  • ステレオ・モノラル両方に対応
  • プログラム実行の進捗状況を逐次報告するように変更.
  • 閾値,音声ファイルの何分の一を「近傍」とするかを入力して指定するように変更.
  • 変数名を幾つか変更.
  • サンプリングレートを最初に表示する機能を追加.
で,以下が .sce.
function reader
    //23rd December 2011.copyright mutsuteru
    //(the author of the blog,http://lesguillemets.blogspot.com/ ,
    //and the one who is tweeting @exumbra_insolem)
    //all rights reserved.
    //Published for personal use only.
    //Sharing any outcome using this program or programs based on this
    //without explicit permission from the author is prohibited.
    //Well, I love this kind of statement.. lol
    a=input("INPUT 1 TO clf, OTHER VALUE TO CONTINUE WITHOUT clf")
    if a==1 then clf;
    end
    [sound1,fs,nbits] = wavread(input("FILE?"));
    printf("sampling rate = %d",fs);
    if size(sound1,"r")==2 then..
        sound2=sound1(2,:);
        sound1=sound1(1,:);//for stereo sound
    end
    disp("NOW PLOTTING THE WAV FILE....");
    plot2d(sound1);//this program fill handle sound1 only.
    a=input("INPUT 1 TO CONTINUE, OTHER VALUE TO RETURN");
    if a~=1 then return;
    end
    disp("CALCULATING THE 2ND POWER OF THE .WAV...")
    pow=sound1^2;
    disp("OK.")
    n=input("HOW MANY SLICES?")
    threshold=input("THE  THRESHOLD?")
    chop=length(pow)/n;
    judge=zeros(pow);   
    showjudge=max(sound1);
    disp("NOW JUDGEING....PLEASE WAIT....");
    for i=1:length(pow)
        if.. 
          mean(pow(max(i-chop/2,1):min(i+chop/2,length(pow))))..
          >threshold..
            then judge(1,i)=showjudge;
        end
    end
    disp("FINISHED. NOW PLOTTING.....")
    plot2d(judge);
endfunction
流石に,色分けも何も無いと読みにくくて仕方がないが.
今回前と同じファイルでやってみたらこんな感じ.まあ当然結果は似たようになる.
 この場合閾値は0.001ならいい感じ, 0.01 は大きすぎるみたい.
二乗してるのも効いてるだろう.
次は
  1. このアルゴリズムの根本的改善,
  2.  発声部と判断したところだけを抽出して新たな .wav を作るアルゴリズムの制作,
  3. 音の大きさ以外のところからの分析の方法 (fourier 変換とか使える)の策定
 辺りをやりたい.1. については,基本的に scilab は行列計算に特化していて,
for 文よりは行列で計算する方が 10~100 倍とか速いらしい (source はこちら <pdf> ) ので,
その点について特に色々考えたい.


<追記:16:19 ,閾値の適切な値の例示を修正(それぞれ 0.1 倍),さらにプログラムの一部変更.
具体的には15行目 付近.変更点にもその内容を追加.
ステレオ,モノラル両方に対応できるプログラムにした.>

Thursday 22 December 2011

untitled

今日は冬至,ということでゆず湯に入った.
柚子というのはなんとも,喜ばしい色をしているものである.
とか思いながら,お風呂に浮かんだ柚子をくるくる回しながら遊んでたら
何か面白いことを思いついた………のだけれども忘れてしまった.

最近キーボード打つときに薬指の使用頻度が以前よりだいぶ上がってる気がする.

体調には気をつけて.体調崩してる人は,早く治りますように.


メモ書きを名乗ってると一日に何回も投稿→数日空白 とかもしやすくてよろしい.

ymmathnote.sty

微積,といえば,(行列たくさん扱う線形代数と違って)微積の授業は比較的 TeX 化しやすいため,
授業と平行して,ノートを TeX で 取ることがしばしばある.
無論この時は結構早く打つのが必要なので, 省入力のためだけのスタイルファイルを用意してる.
現時点の version 保存の意味を兼ねてここにあげてみよう.
ここを見ている人が使うのは自由(というか,気に入ったらどしどし使ってやってください)ですが,
利用者が作ったものとして更に配布したりするのはやめてください.

以下,ymmathnote.sty

\usepackage{amsmath,amssymb,type1cm,bm}
\newcommand{\pdif}[2]{\frac{\partial{#1}}{\partial{#2}}}
\newcommand{\dpdif}[2]{\dfrac{\partial{#1}}{\partial{#2}}}
\newcommand{\bite}{\begin{itemize}}
\newcommand{\eite}{\end{itemize}}
\newcommand{\under}[1]{\begin{itemize}\item {#1}\end{itemize}}
\newcommand{\bien}{\begin{itemize}}
\newcommand{\enen}{\end{itemize}}
\newcommand{\brac}[1]{\left({#1}\right)}
\newcommand{\bbrac}[1]{\bigl({#1}\bigr)}
\newcommand{\Bbrac}[1]{\Bigl({#1}\Bigr)}
\newcommand{\abs}[1]{\left|{#1}\right|}
全部,ここで使うパッケージと LaTeX 標準の命令と被らないように作ってあるから,
基本的には競合して不便,という事にはならないはず.
軽く解説すると,
  • まず amsmath, amssymb, type1cm, bm(数式中\bm{hoge}で太字.) を使う.
  • \pdif{a}{b}で a の b での偏微分∂a/∂b (partial differentiation), \dpdif はその\displayle 版.
  • \bite, \eite は \begin{itemize}, \end{itemize}の省入力.
  • \under は itemize 環境の縮約版. \begin と\end と\item までセットにしてる.{}の中に複数 \itemをいれこむことで普通の itemize 環境としても使えるけどソースが見難くなるから非推奨
  • \bien, \enen は \begin{enumerate}, \end{enumerate}の省入力.それじゃあ been やんか,って言うたらだめです.\bite に引きずられましたごめんなさい((   \beenが defined かどうか確かめるのが面倒なので,と,\bien というのを打つのに慣れたので一旦はこのままで.
  • \brac{hoge} で\right,\left つかって大きさが調節される小括弧 (bracket)で囲む.
  • \bbrac, \Bbrac はそれぞれ,小括弧を \bigl と \bigr,\Bigl と \Bigr で大きさ変えたもの.時々\left, \right では思った大きさにならないことがあるのでそういう時に.
  • \abs{hoge} は絶対値(absolute value).これも \left, \right での大きさ調整込み.
と,まあこんなもん.

授業の回に応じて, \bm{x}とか,f(x,y,z) とかを出力する命令を別個に作ると
(ソース作る姿勢としてはアウトかもしれないけど),さらにはかどります.
ここにあるのは,様々な範囲で使えて,かつ実績がある人らばかりで,
実際にノート取ってる時は臨時で色んな命令が登場します.ここにいるのはそのレギュラーという感じ.
\bite,\eite,\bien,\enen は他の教科のノート取りにも汎用性が高く,気に入ってる命令たちである.

もとは,\int とその後の数式までの間を詰める \Int  (\int \!\! )とかあったりしたのだが,
それはずいぶん慣れて,後に続く式の形,とか,定積分なら上下に何がついてるか,とかによって
\! の数を変えるようになってきた(し,\! うつ速度も上がってきた)ので外した.
好みにもよるけど,不定積分なら \! 2個か3個,
定積分は付いてるものの大きさによるがだいたい4~5 ,くらいがバランスいい気がする.
特に定積分でのスペース調整はこだわりどころ.
dx とかの前には \, 入れてちょっと区切りを作るのも忘れないようにしたいですね(以下数分略

あとスタイルファイルとして追加したいのは,例えば itemize 環境の中で直接別行立て数式打つときに
\item \[ \int_1^a f(x)\,dx\]
とかやると・と数式の間に垂直方向に隙間が空くので,それの調整含めた\item 系統とか,
定理を述べる際に,ひと通りの条件を左詰め複数行で書くのを,
今はだいたい array とか使ってやってるんだが,それをもう少し整備したまとまりある命令とか,
カウンタ勉強して自前の定理環境とか,まあ他にも色々.

結構 LaTeX は長期的に「はまってる」っていっていいんじゃないか,と思っている.

untitled

只今微積(二限連続)の休み時間.

今日気がついたけど, blogger って follow とか public profile とか色々あって,
実際それがどんな感じで動くのかよくわからないけれども,
割合 google + と両方使うのを想定してできてるサービス類が入ってそうな感じ…なのかな?
google + についてはよくわからないままで,これを機にちょっと始めてみるのもいいのかも.

SNS系って全体に「何ができるのかはっきりしないなぁ」っていう状態が続くことが多い気がする.
facebook も周りが結構やってるっぽくて,はじめてみてもええかなぁと思ってるけど
どうなんかなーってままずるずる来てる.

ある意味 blogger から google + に参入するとか google の思う壺ですよねーww
まあ,ええけど.

follow とかの仕組みを少し今日知った,というのは, twitter でのお友達(といっていいかな……)が
blog を始めはったらしく,そのあたりの関係ですねー.機会があれば勝手に宣伝します.
いや,今やってもいいけどさ,なんかある程度形ができてからのほうがやりやすい気がする.

Wednesday 21 December 2011

untitled

ふとした思いつきから,字を全部白にしてみる.
そして「おおっ白い背景から文字がっ」というワクワク感を裏切って,
全く大したことのない内容を書き連ねてみよう.

明日は曇~晴れの予報.朝は3度くらいまで冷え込むらしい.
布団の気持ちいい季節.
夏のかわいたシーツのさらっとしてるのも好きやけど.
それぞれの季節のそれぞれの感触が,強烈な季節ごとの歓びみたいな ものをもってきてくれますね.

寒さといえば,ちょっと前,学校からチャリで帰ってたときやから18時過ぎ,
柔道着だけ着た小学生くらいの子供が自転車でぴゅーっと走ってて,
高校の時のことを思い出したかというとそうでもなく(後からおもいだしたけど),
寒そうやったね.本人元気そうやったけど.

多分今日を悔いて明日に期待するのを,昨日を反省して今日を生きるようにかえれば,
色々とよいように変わる,という気がする.

そういえば昔の修道院の人らはやはり暇だったようで,
科学の歴史見てみるといろんなところで修道院 の人らが何かと発見してる.
結構平和で幸せな暮らしをしていたのではないかな.
まとまりのないことをまとまりなく書くのは結構楽しいものでございますようで.

風邪には気をつけましょう.

Tuesday 20 December 2011

doshisha univ.

今日はツリーを見ようというのを兼ねて同志社にお昼ごはん食べに行った.
ツリーについて言うなら,あれはクリスマスツリー…ではあるし
まさに正真正銘のそれなのだが,
むしろ樅の巨木.
まっすぐそびえ立っておられる.
夜見るとイルミネーションがついてクリスマスっぽいだろうな.

同志社構内はなんというか,居心地がいい,というか,
建物がレンガ造りでしかも落ち着いた雰囲気やったりして,
木もいい感じに植わってて,全体にお洒落でしたねー.
あと京大と比べたら自転車のおとなしいことと言ったらwwww
チャペルちょっと覗かしてもらったりもした.
UK とかの,あのいつでも入れる感じの,教会いいなぁ.
出町付近にあったりするけどあれは日曜の礼拝の時しかあいてないっぽくて残念である.
(そしてここでお決まりのUK行きたいコール

お昼は今出川キャンパスよりちょっと北にあるキャンパスで
おそらく京大のカンフォーラ的な立ち位置のところでパスタランチ食べた.600円.
奥でワッフルとか売ってるとこがあってそのうちそこにいきたひ.
誰か行こうよ(

Saturday 17 December 2011

scilab-analysing .wav files

scilab で .wav ファイルの分析をしてみよう.色々predefined なのが充実してて驚きである.
一方色々覚えなあかんの大変やなぁという感じ.
かえって一から組むのも楽しいかもしれない.

取り敢えず,自分のPCの中から見つけた .wav のファイルを分析してみる.
英語の短いフレーズが入ったのがあったので,それを発声毎に区切ってみたい.
手を動かしてみることも目的の一つなので,上手いアルゴリズムを考えるより初回は安直に,
その時刻まわりの少しの間の振幅の二乗平均がある値を下回れば音の切れ目と判断してみる.
どうなるかを見て,うまいやりかたはまた考えよう.

今回のソースコードがこちら.
sound0=wavread("blah.wav");//ステレオなので2×nが出てくる
sound1=sound0(1,:);
sound2=sound0(2,:);//片方ずつ取り出す,以下sound1のみ考える
plot2d(sound1)//最初に波形を表示
a=input("input 1 to continue")
if a==1 then
examine=sound1^2;//二乗とった波
chop=length(examine)/200;//「周り」として判断する幅.本来は.wav から情報を取るべき
judge=zeros(1,length(examine));//有音無音の判定をsound1と対応させて記録
for i=1:length(examine),
    if mean(examine(max(i-chop/2,1):min(i+chop/2,length(examine))))>0.001//
    then judge(1,i)=0.4;//見やすさのため0.4で
    end
end
plot2d(judge);//有音無音示す
end
 ここから copy & paste すると改行とかの加減でうまく行かないかもしれないからその時は適当に.
一応結果は
括弧みたいに括られてるのが有音と判定されたところ.
改良の余地は,勿論多いにあるが,ぱっと出のプログラムの割には良好かなと思ってわりと満足.
chop, 閾値の変更でもっときれいに取れるかもしれない.
少なくともたったこれだけでちょっとしたグラフが描けたりするのはさすが scilab, というところか.

何箇所か,アルゴリズム以前の問題として,正書法,あるいはこんなコマンドもあるよ,
みたいな感じで「ここは better な書き方があるんだろうな」と思われるのはあるけど,
まあまずは手札の範囲から.
ハサミもプロが使うと化けるように,手札とも仲良くなっていきたいし,手札も増やしたいところ.
色々触っていこう.

Friday 16 December 2011

wavread

wavread をいじろうとしたら何故かエラーで弾かれてなにかなぁとおもってたら
ファイル名に " " つけるの忘れてたっていう話.アホである.
それに気付いた時点でもう眠い.風邪気味やし早く寝よう

Thursday 15 December 2011

Ngram Viewer

twitter 経由で,面白いものを見つけた.
google が google books の近傍で提供しているサービス, Ngram Viewer .
詳しい説明はここにあるが,一部抜粋すると
When you enter phrases into the Google Books Ngram Viewer,
it displays a graph showing how those phrases have occurred in a corpus of books
(e.g., "British English", "English Fiction", "French") over the selected years.
1 単語で出来てるのは unigram, 2 単語なら bigram 一般には n-gram と呼んで,
それぞれの中でのパーセンテージを示してくれるようだ.

これは際限なく遊べるツール.表現の趨勢とかを見るのも楽しいし,実利的にもなるかも.
Soviet Union とか見たらばっちりソ連の成立の辺りからぐぐぐっと持ち上がってる.
corpus も色々から選べるから,例えば有名どころで,
携帯電話をいう言葉をで比較するとくっきり違いが見える(以下,画像はすべてこのサービスのキャプチャ).
上がBritish,下がAmerican.

いやほんとに面白くてもう(((

大文字と小文字は区別されるので.empire と Empire を検索してみると,

赤がEmpire,青がempire

こんな感じになって,empire が廃れてる雰囲気がある.
一般名詞としての empire から,固有名詞,歴史用語的なEmpire に移っていったのかもしれぬ.

他にも色々遊んだけどあんまり一辺に出すのもアレなので,一旦こんなもんにしよう.

ただ無論色々良く考えて使わないと,あくまで全体のなかの割合,やから,
他の分野の言葉がだだっとふえたら その分相対的に量は減って見える.
書くのめんどくさいけどまあ,他にも沢山「ついつい陥ってしまいそう」な誤解はありそうだから,
きちんと頭を働かせながら利用していきたいところ.

しかしほんとに面白いなぁ.
電子辞書があれば前から順に繰っていっていくらでも時間潰せるタイプなので, なんとも楽しくて嬉しい.

Monday 12 December 2011

last night's dream #2

昨晩は,いろいろすごい夢をみた.
なんというか,オールスターキャストやしなんか,ええ.

まず,京都に昔あった祖母宅に向かおうと車に乗ってたら,
いつのまにか高校の敷地内(池のそば)に入っており,
そこで高校の友人達とともに小学校の時の友人がいて,
僕はそこで一旦下車し,友人と話したりしていて,
で,そのうち,小学校の時の友人(以下 M)と話してるうち,M に恨まれているらしいことがわかる.
なんか僕が学級委員かなんかになったことがあって(実際はそんなものに縁はない),
そのとき M がやりたかった,ということらしい.

そして,それから M によくわからない薬草か何かをすりつぶしたかぶれ薬みたいなものを塗りつけられ,
ポケットにあった濡れタオルで顔を拭きながら水道に急いだ,と.
小学校の時の友人の出番はこれで終わり.
M以外にもう一人いたと思うけど,そのひとは特に何かしたわけではなかった.
現実の僕自身は別に小学校の時になんか恨みを買った覚えもないし,学校に対して悪いイメージも持ってないはず.

そのあと暫く記憶が混濁するが,
どうも高校のときのクラスで,実家からほど近い道をどっかに向かっていたシーンがあり,
その後僕の薬草事件とおそらくは別に 事件が起こったらしく,
友人と一緒に情報集めに協力してた.
この時に確か今やってるゲーム Tactics Ogre (PSP リメイク版じゃないよ)に出てくる
ミルディンとギルダスというひとらしき雰囲気を漂わせた人らが出てきてた.

で,しばらくしたら一通りけりがついたようで,
ダンブルドアらしき人物から友人と共にお礼をいわれてた.
僕はよかったなーとか思いながら
気がついたら家電量販店の一角,電子ピアノが大量に置いてあるところにいた.
ふと見ると友人もピアノ弾いてる.僕もちょっと,と思ってピアノに手を伸ばし,
そういえば今日が月曜日(現実世界でも寝て起きたらそう)であることに気がつく.
さらに時計を見るともう月曜にとってる授業は終わっている時間帯であり,
加えて今日は英語の大事なレポートの提出日(これも実際にそう)であることを思い出す.

…… 提出できひん()


と,いうことで件のダンブルドア氏に,
講義に出られなかったがそれなりの事情があった,ということを一筆書いてもらって
なんとかレポートを受け取ってもらおうと思い,ダッシュで頼みに行く.
一緒に協力してた友人とともに会いに行って,かくかくしかじか,話すと,
ダンブルドア氏(仮)はなんかわかったような顔をして,
「自分からNTTに電話してはいけない」
というようなことをいって,脳内ではその時「あぁっNTTちゃう」みたいな動きがあった気がするが,
僕らはそれでお礼をいって帰ることに.
これまた実家から自転車圏内の川沿いの道を友人と歩いて帰り,夕日が眩しかったのを覚えている.
まだ川沿い歩いてるうちにダンブルドア氏が来て,ほらっと差し出す紙はなぜか成績表で,
それも体裁は模試の成績表みたいな感じ.
ちょうど月曜日の授業に勝手に評点がついており,
我々の言うことを完全に理解していなかった彼は,
とりあえず評点つけて単位を与えれば問題ない,と判断したらしい.

レポートの提出について授業に出られなかったのに正当な理由がある証さえたてばそれでいい,
という間もなく彼はいなくなり,レポートがどうなるのか暗澹たる気持ちになって,
家に帰ると僕はこのことを取り敢えず文書にまとめようとPCに向かい,
書き終わった辺りで兄にどうしたのか聞かれ,兄にその文書を読んでもらってる辺りで,目が覚める.

目が覚めて数瞬間は「あぁ…レポート…終わったな………」とかまだおもってて,
ハッと夢だと気付いた時の安堵感はたいそう大きかった.

一方長いハードでリアルな夢をみた疲れは残り,
しかも心のどっか深層は暫く経ってもまだ焦っており,
ひどい目覚めでしたとさ.

要素としては
高校小学両方の友人ゲーム小さい頃の記憶映画少し前の仏語の授業(NTTが出た)ピアノ友人のブログ
など盛りだくさん.
意識に上ったこと全部詰め合わせた感じである.

結局レポートはちゃんと提出できた.しかし今でも,なんか火曜日な気分である.

Sunday 11 December 2011

Laputa language

これ.TL 上のさくら / くるーど さんが例によって面白そうなことを言っておられる,と思って
そのうち誰か togetter に載せてくれるだろうなと思っていたら素晴らしいまとめになっていた.

面白そうやなと再び思って色々みてみたり,
海外の言語クラスタはどんなこといってるのかなとか思って英語と(盛大に背伸びして)仏語で検索かけたり.
やってたらいつの間にか 1 時間経ってて実際こんな事してる場合じゃない.
なんか,語学クラスタになりたいっていっても罰が当たらない程度にはなりたいなぁ.
今やる気のある講義トップ 3 が 仏語線形代数政治学っていうよくわからない状況になってるけど,
やっぱり語学は楽しいなーって.

色んな言葉をしっかり学びたい.まずは仏語やけど,自分でちゃきちゃき手を出して勉強して,
したいし,したいならしたいって言ってるだけじゃなく,しないといけません.

lunar eclipse

昨晩の話ですねー.
とはいっても,ここで「個人用メモ」という銘を打っているため月食を完璧にスルーすることも可能(ドヤァァァァ

な,わけですが,
月食良かったなー.綺麗やったし,なんか刻一刻と移り変わるのも,よかった.
あと星が綺麗やったねー.オリオン座と月とか.

いろんな人が昨晩はわざわざ月を見上げてたんだろう.

かく言う僕も屋上に上がって震えながら空見てた.すごい手が冷えた.あと携帯を下に置いといたらものすごいつめたくなってておもしろかった

そして前に見た日食を思い出したりした

Saturday 10 December 2011

Laputa

一言いっておこう.

「バルス!!!!」

_________
因みに,小さい頃も,そしていま見てもそうやったけど,
なんか天空のロボットたちが悲壮すぎて,
作品としてはいいとおもうのだけれど,
心情的に「好き」になれない.
好きっちゃ好きやけど,なんか辛いなぁって.

でもムスカ大佐はいい味を出していらっしゃる.

Thursday 8 December 2011

français

昼間に突然なにかが降りてきて gmail と twitter と pad の言語設定を仏語にした.
非常にええ感じ.
ちなみに, twitter については英仏対応はこんな感じになる.

 Quoi de neuf ? (What's happening?)
 tweeter  (v.tweet)
 répondre (reply)
 suivre (follow)
 se désabonner (unfollow)
 abonnements (following)
 Abonnés (followers)
 favoris (favorites)
 accueil (home)
 Fil (timeline)
 Oups ! Vous aves déjà tweeté ça.  (Whoops! You already tweeted that..)


集めることを目的に集めたんじゃなくて目に入ったのをこの記事用にメモっただけなので適当.
やっぱり普段から触るのはひとついいと思うのだ.

bible #2

今朝歩いてたら,ちょっと思いついたこと.聖書の節の引用の仕方をよく知らないのは案外不便かもしれない.
基盤になってるのは聖書のうちの自分が読んだとこだけ(新約は結構読んでるけど旧約はそんなに)やから,
ほんとに単なる思いつき.

新約と旧約で,かなり死生観に違いがあるのではないか.
新約聖書では天の国とか,まあ単純にいうたら死んだあとの話が頻繁に出てくる.
ちょうどいいのがパッとないので手近なところから行くと
 「次の世に入って死者の中から復活するのにふさわしいとされた人々は,…」(Luke 20. 35)
 などということがあるが,旧約を紐解くと
「…塵に過ぎないお前は塵に返る.」 (Gen.3.19)
であったり,
「…わたしの霊は人の中に永久にとどまるべきではない.人は肉に過ぎないのだから.…」(Gen.6.3)
 というのがあって,旧約のほうがだいぶ物質的に死を捉えてるような印象を受ける.
 ついでに,「次の世」の件について言えば
「わたしは,あなたとの間に,また後に続く子孫との間に契約を立て,それを永遠の契約とする.…」(Gen.17.7)
 とあって,次の世のようなものを想定してるようには思われない.

だからどうというところでもないが,朝突然思いついた話.

Tuesday 6 December 2011

paramfplot2d---animated plot

以前の重力シミュレーションの時に,plot を動的に,アニメーションで表示できたらええな,と思ったので調べてみた.
scilab an 辺りで animation が候補に出てくる.割とポピュラーな話題のようだ.
まず今日見つかったのが paramfplot2d 氏.以下サンプルコード,解説などはここを参照する.
この関数は "Animated plot of the function x, t-->f(x,t) for t=theta(1),theta(2),etc."
とりあえずはサンプルコードを見てみよう.シンプルそうな一個目を見る.
deff('y=f(x,t)','y=t*sin(x)') //関数定義.
x=linspace(0,2*%pi,50); //linspace: linearly spaced vector
theta=0:0.05:1; // 刻み
clf;// 一旦画像消す……のだがこの行なくても同じように動く 
paramfplot2d(f,x,theta); // 今回の焦点
t sin x の t がじわじわ大きくなる時のアニメーションが表示される.
paramfplot2d の各引数についてはこれでわかりやすい.
3行目を theta=0:0.005:1; と書き換えると動きはもっとのったりする.
step 間の時間調整もなんかあるのかな…また調べとこう.

clf;  の存在意義はこのコード中最大の謎.

また, linspace linearly spaced vector も便利そう.
この場合は,0~2π を50 個に linear に分けた vector が x となる.一般には
[v]=linspace(x1,x2 [,n])
 n は省略可能で, default では 100 に設定されている.x とかは複素数で良い.

今日お知り合いになれたのは皆使い所の多そうな人たちである.

bible

聖書(僕は特定の宗教の信者ではない),は,単純に文献として読むと非常に面白いのだけれど,
どうしても宗教を背景に読まれてしまいそうで,なかなかこういう場で書けない.
そもそもある人々にとっては聖なる書であるものを,こういう形で読んでいいものか,というのはある.
幼稚園がキリスト教系で,「かみさま」への素朴な信頼とかはあったし,
神社に行けばなんとなく畏まり,お守りを頂いたり,仏壇の前では手を合わせ,といった風に,
いわゆる「日本人らしい」かたちの信仰心のようなものはあるから,
そういうのに無理解である積りはないのだけれど.

聖書の中の話には幾つか類型があって,とか,色々な単位が使われているけど,とか,
文面通り読むと聖書の中で不整合な部分が見つかる,とか,
あるいはこの箇所はなぜこのような形で書かれたのだろうか,とか(書き手がどのようなものであるかは別にして),
話すと面白いことは沢山あるのだけれど,なんか気兼ねなく書きづらいよなぁ.

現実世界で話を振られたら色々喋りますよ←

gif animation

生まれて初めて gif animation をいじってみた.
最初はメジャーっぽいの使って,色々判ってきた時点で不満とかあれば乗り換えたらええかなって感じで,
とりあえず Giam というフリーソフトを入れてみた.
初学向けには不自由ないと思われる感じで,もともと入っている(これは有料)
PhotoImpact という画像編集ソフトとあわせて,さくさくっと第一号制作.
あすにゃん,という,なんというか,東大の一部(?)で人気()なすうがくの先生がいらっしゃって,
彼のホームページにいるナイスなうさぎを踊らせてみたのだが,案外ひょいひょい動いておもしろい.
従って up は不可(多分.大丈夫ならご教示ください).
なんかの慰みに,とか,使い方によっては実用的にも役立つかもしれない.
また何か面白いの思いついたら作ってみたいところである.

Monday 5 December 2011

untitled #2

今日は,人と会えたりいいことも色々とあったけれども,
不幸なアクシデントが(そしてそれらは幸いにも不幸中の幸いという形で回収されたわけだが)あった.
しかし思えば不幸なアクシデントというのは結構普段の生き方を変えれば避けられる類のもので,
勿論どんなに気をつけてても起こるものは起こるだろうが,
「うわぁ厄日」と思うような日も,
その日に起こっていたことは屡々,「(普段起こらないことではあるけど)場合によっては避けられていた」,
というようなものがかなり多いはず.
自転車で釘踏んでパンク,とか,そういうどうしようもない不幸は沢山あるが,
日頃の心がけで防げるものは,防いでおけるような,そういう生活態度を目指そうと改めて思ったりした.


そういえば,昔 「不幸中の幸い」を「飛行中の幸い」だと思ってたなぁ.

Sunday 4 December 2011

Last night's dream

昨晩(3rd ~ 4th Dec. 2011) の夢.

前半はよく憶えてない.友人が出てきた.彼に買っておいたお守りを渡した.
それからなんかよくわからない乗り物で百万遍まで行ったら,
どうも総長が亡くなったらしく,あの辺り一帯が喪中モード.
百万遍から東にちょっといったところに,コンクリむき出しで内装の全くない箱みたいな所があって,
そこで件の友人ほか数人とラジオ聞きながらお酒を飲んだ.

Friday 2 December 2011

Vive le vent..

ということで,早速歌詞を拾ってきた. 英語の Jingle Bells の曲.歌詞の意味は違う.
Youtube で "chanson de Nöel" で検索かけて引っかかった,この vive le vent という曲.
歌詞付属でアップしてくれてるのを,手打ちで写したので typo の可能性は否めない.
Joyeux joyeux Noël aux mille bougies qu'enchantent vers le ciel les cloches de la nuit.
の一節はたぶん余り知らないフレーズである.

Vive le vent, vive le vent, vive le vent d'hiver
qui s'en va sifflant, soufflant
dans les grand sapins verts.

Vive le temps, vive le temps, vive le temps d'hiver
boules de neige et jour de l'on
et bonne année grand-mère.

Joyeux joyeux Noël
aux mille bougies
qu'enchantent vers le ciel
les cloches de la nuit.

Vive le vent, vive le vent, vive le vent d'hiver
qui rapporte aux vieux enfants
un souvenir d'hier.

Sur le long chermin
tout blanc de neige blanche
un vieux monsieur s'avance
avec sa canne dans la main
et tout là-haut le vent
wui siffle dans les branches
puis souffle la romance qu'il chantait petit enfant.

Vive le vent, vive le vent, vive le vent d'hiver
qui s'en va sifflant, soufflant
dans les grand sapins verts.

Vive le temps, vive le temps, vive le temps d'hiver
boules de neige et jour de l'on
et bonne année grand-mère.

Joyeux joyeux Noël
aux mille bougies
qu'enchantent vers le ciel
les cloches de la nuit.

Vive le vent, vive le vent, vive le vent d'hiver
qui rapporte aux vieux enfants
un souvenir d'hier.

Et le vieux monsieur
descend vers le village
C'est l'heure où tout est sage et l'ombre danse au coin du feu
Mais dans chaque maison
il flotte un air de fête
partout la table est préte et l'on etend la même chanson.

Vive le vent, vive le vent, vive le vent d'hiver
qui s'en va sifflant, soufflant
dans les grand sapins verts.

Vive le temps, vive le temps, vive le temps d'hiver
boules de neige et jour de l'on
et bonne année grand-mère.

フランス語キーボードにもだいぶ慣れてきた.
そしてこのびろろーんって伸びて見難いの何とかしたいかもしれない.
が,順に目で追っていけるようリピートのところを記号で略したりはしない

wikimedia commons

wikimedia commons が案外宝の山.夜景,自然,人文系,色々な写真がたくさん蓄積されてる.
虫がちょっと多いのがアレやけどまあそんなことはどうでもよい.
今日ちょっと間漁っただけでも色々あって, 
 Kukenan Tepuy at Sunset とか, 星空では こんなのとか(デスクトップ背景にしようかとか思ってる),
 さすがの神戸港 とか.


色々いいのは世の中に転がっているものです.




______________


このクリスマスシーズンには数曲クリスマスソングを仏語で歌えるようにしてみたいとか思っている.

Thursday 1 December 2011

gravity simulation #1

シミュレーション系の手始めに二次元で.
質点を一個原点に固定して,もう一個の質点を初速度与えてその後の運動をシミュレート.
function grav2d;
nstep=10000;  //step 数
dt=0.01;//時間刻み
r=zeros(nstep+1,2);  //位置
v=zeros(nstep+1,2);  //速度
a=zeros(nstep+1,2);  //加速度
GM=input('gm?');  //固定した質点のM と重力定数の積
r(1,:)=input('r1?');  //初期値設定
v(1,:)=input('v1?');
a(1,:)=r(1,:)*GM/(norm(r(1,:))^3);
for n=2:nstep+1,
    r(n,:)=r(n-1,:)+dt*v(n-1,:);
    v(n,:)=v(n-1,:)+dt*a(n-1,:);
    a(n,:)=-r(n,:)*GM/(norm(r(n,:))^3);
    if norm(r(n,:))<0.1 then break;
    end
end
x=r(:,1); y=r(:,2);   //こことその下は一行で書けるのかも
plot2d(x,y);
norm の三乗とかでるからどうしても ちょっと計算量は多くなる.
なおまだちゃんと数値を考えた上で動かして見てないから正しく動いてるかちょっと不明.

<追記 @15:21 01/12/2011>
このプログラムのままでは,例えば円軌道を描くべき初期設定でも楕円を描いてしまう.
dt が大きすぎるため,と思われ,10^{-4} くらいでちゃんと動くようだ(thanks; @sericum ).
ついでに,scilab の Floating-point relative accuracy は %eps .

vanish

scinotes で機嫌よくプログラム書いてたら,データが消えた.
やはりこまめにバックアップ,というか,
一行ごとに ctrl+s くらいの気構えは必要かも.
原因ははっきりしていて,scilab console と scinotes 開いてる時に scilab console から Alt+F4 押して,
当然(とはいえ製作者の心遣いに感謝!) scinotes から保存するかどうか聞かれるわけやけど,
そこでキャンセル押したところ,保存されずにそのまま終了,ということに.
多分 scinotes はキャンセル承ってくれたのに scilab console が閉じようとしたからではないだろうか.
気をつけよう.そもそも保存はこまめにというのはゲームでもなんでも鉄則である.
しかし普段はとってるのになぁ… と,いう,ありがちなパターン.

 blogger は自動でこまめに draft 保存してくれるけど,
場合によってはずばっと消えたそのデータで上書きしてしまう ようなことがあった気がする.ちょっと前.



12月になったけど,早いですね.怖い怖い.

「話をしよう.」