numpy.fftのテンプレート

matplotlibのテンプレートにつづいて、numpyでFFTするときのテンプレートです。1.5 MHzのsin関数を5.8MHz 4ビット分解能のADCで5000点サンプルしたときの結果です。np.fft.fftfreq()関数で周波数軸も求められるので、Hzで表示しています。 GistにはJupyter Notebookをそのままアップロードしておいたので、プロット結果、sin.textの中身とあわせて見ることができます。  

matplotlibのテンプレート(Rubyユーザ向け?)

仕事の都合でPython (numpyとmatplotlib)を使わないといけないのですが、numpyの関数スタイルとmatplotlibのオブジェクト指向がなかなかなじめなくて効率が悪いなーと思っています(毎回ウェブで書き方を調べないといけない)。matplotlib.plotの関数とaxesの関数で名前が違う(set_xlim()とxlim()とか)のがすごくややこしい。 とりあえず、軸ラベルの設定やスケール(lin/log)の変更など、やりたいことがすぐできるように自分用のメモ。以下のスクリプトを実行するか、Jupyter notebookにコピーペーストして実行すると、下のような図ができます。 RubyやROOTのオブジェクト指向に慣れている人は、以下の方法でfigとpanel (オフィシャルにはaxesと呼ばれている)を最初に作って、panelに対してplot()やset_xlim()をコールするほうが理解がスムーズだと思います。 FigureオブジェクトとAxes (プロット用のpanel)の生成 ソースコード全体: 1枚のプロットに複数のパネルをつくる例…

Raspberry PiでI2C接続の128×64 OLEDに日本語を表示(美咲フォント)

先日のmbed nucleoでの128×64ピクセルOLEの駆動試験に続き、今年の冬の雷雲ガンマ線観測で使用するRaspberry Pi 3でも128×64ピクセルのOLED(Alibabaの販売サイト/Adafruitの販売サイト)をI2Cインタフェース経由で駆動してみました。画面そのものは小さいですが、16×2行のディスプレイよりも少ないインタフェース線数で、より多くの情報を表示することができます。みなさんも自分の電子工作で使ってみては。 【参考】雷雲プロジェクト – Thundercloud Project 概要 基本的にはAdafruitによるチュートリアル「SSD1306…

Pythonのスプライン補間はscipyのInterpolatedUnivariateSpline

1000ノット以上のデータを補完しようとしてメモリ不足になる場合は、numpyのinterp1dではなく、scipy.interpolate.InterpolatedUnivariateSpline(x,y,k)を使いましょう。 たとえば という感じ。 「numpy スプライン補間」で検索すると、10点くらいのデータ点をサンプルに示して、interp1dを使えと書いてある記事が散見されます。これだと10万以上のノット数ではうまくいきません。Python 2系列でしか試せていないのですが、interp1dだと10万ノットで10GBを超えるようなメモリを確保しようとして、プログラムが応答しなくなります。InterpolatedUnivariateSplineだとすぐ完了します。日本語で検索しても同じ症状で困っている人がすぐに見つかりませんでしたが、英語だとStuckoverflowで「Cubic spline memory errorCubic spline…