JuliaLang

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…

統計の準備

簡単な統計ならすぐにできます。 julia> A = randn(5) #標準正規分布に従う乱数列を生成 [0.933857, 0.716588, 0.847243, 0.509315, 0.443582] julia> mean(A) # 平均 0.6901170571664779 julia> std(A) # 標準偏差 0.21110850675084233正規分布の確率関数な…

行列演算

Matlabにそっくりな文法なので、いろいろ行列演算をしてみました。「#」は、Matlabの「%」やJavaの「//」に相当するコメント記号で、そこから行末までが無視されます。 julia> A = randi(6, 3, 3) # 1〜6の乱数で3x3の行列を作る 3x3 Int64 Array: 5 6 5 1 3…

Juliaの便利環境を準備する

hiraxさんのように色々な曲線を描きたいので、同じやり方でやってみました。まずはウェブサーバーとして動かすための準備。ターミナルから以下のコマンドでJuliaサーバーをビルド。 $ make -C external install-lighttpdビルドできたらサーバーを立ち上げま…

Juliaのビルド (Mac OS X 10.7.3 / Xcode 4.3)

Mac OS X 10.7.3、Xcode 4.3の環境でJuliaをビルドする方法です。XcodeはApp Storeから無料で入手できます。ただし、現行のバージョン4.3からはコマンドライン・ツールがオプションなので、追加インストールする必要があります。Xcodeを立ち上げたあと、メニ…

なぜ僕らはJuliaを作ったか(翻訳)

僕は言語を作るきっかけとか思想とかに興味があるので、日頃から新言語を見つけてはニヤニヤしてるんですが、つい昨日Juliaという新言語のリリース記事を読んで、面白そうだったので、紹介がてら粗く翻訳してみました。なぜ僕らはJuliaを作ったか(原文:Why…