JuliaLang

フィルターバンク (Julia Advent Calendar 2020)

このエントリはJulia Advent Calendar 2020の25日目のものです。Juliaを音に関する研究によく使っているので、その中から一つ紹介したいと思います。 音の加工をするときにフィルタというものを使うことがあります。フィルタは、特定の周波数の音を除去した…

周波数から音名を得る (Julia Advent Calendar 2020)

このエントリはJulia Advent Calendar 2020の24日目のものです。Juliaを音に関する作業によく使っているので、その中から一つ紹介したいと思います。 音の高さをあらわす方法にはいくつかあります。周波数を使うと「1秒あたりの周期の数」として物理的にも明…

JuliaでOSを判別する方法

普段使用しているコンピュータが2台あります。一つはMacBook Proで、もう一つは自作のWindows PCです。それらのあいだでデータの共有・同期を行うのにはGoogle Driveを使用しています。 Juliaについても同様で、Google Driveに_juliaという名前のディレクト…

東京都のCOVID-19データを取ってくる(Julia版)

先月のエントリでRを使って東京都の新規陽性者数を取得してくるプログラムを作りました。 marui.hatenablog.com 今日はそれをJuliaでやってみたいと思います。とは言っても、Rでやっていることとほとんど同じで、HTTPパッケージを使って東京都のサイトにアク…

JuliaからRCallを使ってANOVA君を呼び出す

ANOVA君は、井関龍太氏が開発している、Rで動作する分散分析プログラムです。様々な実験計画に対応できるようになっており、分散分析に加えて多重比較や単純主効果の検定もやってくれます。自分ではlm()とかaov()なども使ってはいますが、ANOVA君は一回の関…

Juliaパッケージのインストール・スクリプト

新しい環境にJuliaをインストールするときに、自分が使うパッケージ群をまとめてインストールしたいことがあります。 僕の場合、以前はテキストファイルに add Atom add Juno add IJulia のように書いたものを準備しておいて、Pkgモードにコピペするようにし…

Julia 1.3.1にSampledSignalsをインストールした

先日のアドベントカレンダーへのエントリ中で、「今回のエントリはJulia 1.0.5用に書いています。というのも、Julia 1.2や1.3あたりからLibSndFileなどのインストールがうまくいかない状況になっているからです」と書きましたが、それが解決できたので記録を…

パワースペクトル計算の2つの方法 (Julia Advent Calendar 2019)

はじめに これはJulia Advent Calendar 2019の20日目の記事です。「音について何か書きます」と宣言したので、普段Juliaを使って音についてどんなことをしているかを紹介します。今年はパワースペクトルの計算を、(1)信号全体をフーリエ変換する方法と、(2)…

Julia(とR)で古典的多次元尺度法

昨日、こんなツイートを見た。 以前、県庁所在地と県庁所在地の間の距離が一番近いのどこか気になって、大津と京都が一番近いという無駄知識を得たんだけど、国土地理院さんが「都道府県庁間の距離」というなんのために作成されたのかまったくわからない図表…

PortAudio.jlのインストール(2019年11月3日時点)

PortAudio.jlが公式レジストリから消えてしまったのか、これまでのようにインストールしようとすると「見つからない」と言われてしまいます。 (v1.2) pkg> add PortAudio#julia1 ERROR: The following package names could not be resolved: * PortAudio (no…

アダマール行列(N = 2^kのときのみ)

StautnerとPucketteが提案したFeedback Delay Networkという人工リバーブがあります。このFDNを実装するときに必要になるものに、N×Nの行列があります。これを行列Gとしたとき、各要素g_{i,j}はディレイラインiからディレイラインjへのフィードバック・ゲイ…

線形予測符号(LPC)でスペクトル包絡を計算する

Juliaを使った音の処理については、これまでにいくつかのエントリを書きましたが、今日は線形予測符号(LPC; Linear Predictive Coding)を用いてスペクトル包絡を求めてみます。ここでは線形予測符号の説明は省きますが、音声信号処理の分野では昔からよく…

Juliaの変数スコープについて

(2020年8月15日:Julia 1.5で、REPLではlocalスコープ内からglobal変数を参照できるようになりました。Julia 0.6以前の挙動に戻ったことになります) Juliaの変数スコープはMatlabやC言語と少し違うので混乱した話。(2019年8月25日:global/localスコープ…

Gtk.jlの準備

(2020年2月15日追記:ここ半年ほどGtk.jlがインストールできない、あるいはインストールできてもウィンドウが表示されない状況が続いていました。さきほどJulia 1.3.1で再挑戦したところ、以下の対策をしなくてもGtk.jlが使用できました!) JuliaでGUIを作…

楽器音の分析とスペクトログラム (Julia Advent Calendar 2018)

この記事はJulia Advent Calendar 2018の24日目です。 僕は日頃、おもにオーディオ信号を扱うのにJuliaを使用しています。今日はそのうち楽器音の分析のために作成したプログラムを紹介します。 楽器音の分析 楽器の音を聞いたとき、トランペットとピアノと…

Julia 1.0でオーディオ入出力(とインパルス応答測定)

Juliaが1.0になって、徐々に環境が整ってきました。ここ数日、LibSndFile.jlやPortAudio.jlを使ってゴニョゴニョやっていたことをまとめておきます。 TLDR。入出力の同期とか考えずに最低限の音再生ができればいいという場合は、 using FileIO: load, save i…

Juliaコードのディスアセンブル(Julia 1.0)

marui.hatenablog.com 上記のJulia 0.6でやったことと同じですが、Julia 1.0がリリースされたので変化があったか見てみました。 前回と同じくadd1()を関数定義します。これはJulia 0.6でも1.0でも同じ。 julia> function add1(x) return x+1 end add1 (gener…

Juliaコードのディスアセンブル(Julia 0.6)

www.youtube.com ヨーロッパLISPコンファレンスで発表された上記のプレゼンの中に、Juliaコードをネイティブコードに変換して中身を確認するマクロが紹介されていました。 公式ドキュメントではEssentials · The Julia Languageに書かれていますが、面白そう…

PinkTSP信号をJuliaで作る

Julia言語でPinkTSP信号を作るプログラムを書いた。とは言っても、以前書いたMatlabのものをそのまま移植しただけ。そもそも参考にしたのは以下の文献。 藤本卓也. “低域バンドでのSN比改善を目的としたTSP信号に関する検討.” 日本音響学会研究発表会講演論…

DSP.jlに対応した低域フィルタ

引き続きJuliaネタです。前回は、Bristow-JohnsonのパラメトリックEQを自作のfreqz関数で可視化してみました。 marui.hatenablog.com ただ、プログラミング言語を使う際には長いものには巻かれておいたほうが良いので、Juliaのエコシステムで言及されているJ…

パラメトリックEQ

先日Juliaでフィルタの可視化をしたけれど、あの時点ではまだフィルタの設計はMatlabに頼っていた。今回はRobert Bristow-Johnson氏の名作をもとに、パラメトリックEQを作る。ただし、今日ここに紹介するのはピークフィルタのみ。

MatlabのfreqzもどきをJuliaで

MatlabやOctaveにはfreqzという関数があり、FIR/IIRフィルタの周波数特性・位相特性を計算しグラフ表示してくれます。PythonでもSciPy.signalに同名の関数があります。似たことをJuliaでやってみました。 今回は双二次フィルタを見てみましょう。標本化周波…

音ファイルの読み込みと単純な可視化

ここ数年の僕はプログラミングというと音と統計ばかりやっているのですが、特に音の分析や加工に関してよく使うものはMatlab、Python、Rで実装したので、次はCommon LispかJuliaで実装してみようかと思います。最終的にはCommon Lispでなんでもやるのが夢な…

PyPlotでお手軽にグラフを描く

表題通りなのですが、Juliaには高機能なグラフィックス環境がいくつかあります。その中でもPythonのmatplotlib.pyplotを真似たパッケージがPythonユーザにとってもMatlab/Octaveユーザにとってもとっつきやすいのではないでしょうか。 たとえば以下のように…

Juliaで任意精度演算

Juliaで階乗を計算する関数は、その名もfactorial()です。たとえば20!を計算するには以下のようにすれば一発です。 julia> factorial(20) 2432902008176640000 ただ、デフォルトでは64ビット符合付き整数での演算なので、その範囲を超える場合にはエラーにな…

久しぶりにJuliaを触ってみた

久しぶりにJuliaを触ってみた。Mac OS X版はパッケージ化されて、一般のアプリケーションとして起動できるようになっており、インストールのハードルがかなり下がった。Mac OS X 10.9 Mavericksにインストールしてみたよ。 まず http://julialang.org/downlo…

モンテカルロ法で円周率の(並行)計算

先日Matlabで書いたものと同じアルゴリズムを、Juliaで並行計算できるようにしました。 tic() N = 1000000; K = 1000; est_pi_total = @parallel (+) for k=1:K x = rand(N); y = rand(N); 4*( sum(x.*x + y.*y < 1) / N) end printf("K=%d N=%d ==> pi=%f\n…

ちょっとしたグラフを描いてみる

Juliaのウェブ・インターフェースを使えば、ちょっとしたグラフだったら簡単に描くことができます。たとえばWolfram Alphaにグラフを描くサンプルが掲載されていたので、同じものをやってみました。Juliaでは以下のようにすれば、定義域xに対する値域x^3-6x^…

再インストール

Juliaのプリリリース版を使っていたけれど、再インストールしてみました。何が変わったというわけではありませんが、とりあえずバージョン番号は上がっているようです。これまでは $ julia --version $ julia _ _ _ _(_)_ | (_) | (_) (_) | A fresh approac…

関数とメソッド

Juliaのマニュアルの目次は以下のようになっています(括弧内は丸井綜研訳)。 Introduction (はじめに) Getting Started (動かしてみよう) Integers and Floating-Point Numbers (整数と浮動小数) Mathematical Operations (数学演算) Complex and Rational…