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

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

disp('hello')

で済む。
 というか、

'hello'

でもいい。
 そもそもMATLABの得意分野は文字列演算ではなく行列演算なので、MATLABが正しく動くかどうかを試したいだけならば、

1 + 1

で、 "2" が出力されることを確認すればいい。

MATLABでハローワールド

 学生の頃から慣れ親しんでいるMATLABであるが、最近になってアルファベット以外の文字を使い始めた。その際、Windows版のMATLABではUTF-8で書いた文字が文字化けしてしまっていた。Shift-JISでコードを書かないと文字化けするようであった。
 そのあたりのことを検索してみて分かったのは、みんなそのあたりで苦労している、ということであった。
 とりあえず、私としては以下のように対処することにした。
 まず、UTF-8でテキストファイルを書く(ファイル名は "testText.txt" とした)。

おはよう世の中

 そして、以下のようなスクリプトで、テキストファイルを文字コードを指定して読み込む(fopenの第4引数で指定する)。

fid = fopen('testText.txt', 'r', 'n', 'utf-8');
s = fscanf(fid, '%s');
fclose(fid);
disp(s)

 これで『おはよう世の中』と出力される。

博士の愛したかもしれない数式

 この前、声の研究も数学だらけなんだよなあと書いた(声と三角比。 - 日々のメモ)。一度説明を放棄したこの話であるが、高校までの数学の要素がたくさん詰まっている数式があったので掲載する。数式があったというか、あまりにも使う頻度が高いので存在を意識していなかった。
 日本語でいえば、離散フーリエ変換の絶対値の対数である。
 数式にすると、
\displaystyle{X(k)=\log\left|\sum_{n=0}^{N-1}{w(n)x(n)\left(\cos\left(\frac{2\pi nk}{N}\right)-i\sin\left(\frac{2\pi nk}{N}\right)\right)}\right|}
である。ここでnx(\cdot)w(\cdot)はそれぞれ離散時刻と入力信号と窓関数である。
 ここには高校で習った対数とシグマと三角関数虚数が出てくる。ついでに中学校で習った絶対値も出てくる。
 声の研究にはもっと複雑な数式も出てくる。今回のこの数式はおよそ中くらいの難度のものである。

クリフトとか内藤九段とか

 数年前から、AIという単語がニューラルネットワークと同義に使われている文章を見かけることが多くなった。でも、それはなんか違うよなあという気がする。AIは単なる機械学習ツールではないよなあと思う。
 じゃあ何なのかというと定義が難しいが、そこには知能とは何かという問いについて答える何かが含まれているんじゃないかと思う。
 テレビゲームの『ドラゴンクエスト4』とか『本将棋内藤九段将棋秘伝』とかは、AIであるという気がする。知能の問題に挑戦する姿勢が見てとれるからである。
 AIではなくデータサイエンスという呼び名であれば気持ちは分かる。サイエンスとは大げさな呼び名だなあとは思うが、それなりに的確に分野を表している。対象が知能ではなくデータとなっているからである。

コンパイラ

 普段はWindowsを使っているが、たまにLinuxを使うと秘密基地にもぐったような気分に浸れる。昨日、gccを使ってCの実行ファイルの速度を確かめてみたくなり、久々にLinuxをいじったのである。結果、PythonよりCのほうが10倍以上速かった。
 それはそれとして、WindowsにCコンパイラの決定版みたいなのがなぜないのかが分からない。既存のものといえばVisual StudioとかMinGWとかBorlandとかいずれにせよ何かしら設定が必要で、その上どことなくWindowsに悪影響を及ぼしそうで、インストールするのが怖い。あと、サポート切れも怖い。
 さらにいえば、Javaコンパイラももっと簡単にインストールできるようにならないものか(これもインストールしていない)。
 MicrosoftVisual Studio Codeというエディタの決定版みたいなのを作ったのだから、C/C++Javaコンパイラの決定版みたいなものも作ってもらえないものだろうか。それともすでにあるのだろうか。
 コンパイラとはまるで関係のない話だが、9ヶ月くらい前に学会でMicrosoftの『りんな』の説明文を読んだ。文意はとれるものの、どこに技術的な進歩があってあそこまで人間らしい合成音になったのかがまるで分らなかった。原稿に書かれていた要素技術はほぼ既存の技術であり、何がそれまでの技術と異なるのかが読み取れなかった。『りんな』自体はすごいので、多分、あの原稿は肝心な部分を書かずに誤魔化している。