公式サイトの解説より これは畳み込みニューラルネットワークで行っている畳み込み(convolution)と同じことを1次元で行っているとも言えます。畳み込みニューラルネットワークについては以下の記事を参考にしてください。 定番のConvolutional Neural Networkをゼロから理解する /deep_learning/2016/11/07/convolutional_neural_network.html パラメータmodeについて ここでのnの範囲を定めるのが引数modeとなります。モードごとの処理内容は以下の通りです。 full : vの範囲いっぱいまでaの範囲内で積分を行うため、返される配列の長さはN+M-1となります。このとき、信号の残響を見ることができます。 same:配列の長さがmax(M,N)となり、長い方の配列に要素数を合わせます。 valid:うまくaとvの
I need to add two subplots to a figure. One subplot needs to be about three times as wide as the second (same height). I accomplished this using GridSpec and the colspan argument but I would like to do this using figure so I can save to PDF. I can adjust the first figure using the figsize argument in the constructor, but how do I change the size of the second plot?
整数 $n$ について階乗 $n!$ は \[n!=\begin{cases}1 & (n=0)\\[6pt]n(n-1)(n-2)\ \cdots\ 2\cdot 1 & (n\geq 1)\end{cases}\] によって定義されますが、$n$ を実部が正となる複素数 $z$ にまで拡大定義した連続関数をガンマ関数とよびます。 \[\Gamma(z)=\int_{0}^{\infty} e^{-t}t^{z-1}\tag{1}dt\] $z$ が整数 $n$ であるとき、ガンマ関数と階乗の間には次のような関係があります。 \[\Gamma(n+1)=n!\tag{2}\] $z$ が非整数であっても、$\Gamma(z)$ は以下の公式によって再帰計算することができます。 \[\Gamma(z+1)=z\Gamma(z)\tag{3}\] また、$z=1/2$ におけるガンマ関数の値
事象 VS Code上でOpenCVのimshow()を実行して画像を表示させて確認しようと実行すると、下図のような状況に陥ってしまいました。 動作環境 Python 3.7.0 VS Code: August 2018 (version 1.27) opencv-python: 3.4.3.18 現象 ウィンドウの位置が固定されてしまう。 ウィンドウサイズが小さい。 ウィンドウがスケールできない。 キー入力すると表示させたウィンドウが固まる。 解決法 解決法は2Stepです。 まず前提として、imshow()を使用した画像表示のテンプレとして、 このように書くかと思います。 waitKey()を呼ばないと、そもそも画像が表示されませんね? Step1 まずウィンドウの位置とサイズの件。imshow()で生成されるウィンドウにはデフォルトでcv2.WINDOW_AUTOSIZEというフラグ
はじめに 前回はPywaveletでウェーブレットObjectを作るまで 今回は実際にDWTを実装 1次のDWT(深さ1のDWT) とりあえずDWTとIDWTを実装してみる。 簡単のためまずHaarウェーブレットで実装。(1次のDaubechiesウェーブレットはHaarウェーブレットと同じらしい) import pywt a = [1,2,3,4,5,6,7,8] (cA,cD) = pywt.dwt(a,'db1') # cA = array([ 2.12132034, 4.94974747, 7.77817459, 10.60660172]) # cD = array([-0.70710678, -0.70710678, -0.70710678, -0.70710678]) b = pywt.idwt(cA,cD,'db1') # b = array([1., 2., 3., 4.,
PyWaveletについての備忘録 音声信号に離散ウェーブレット変換をかけたくなったのでとりあえず調査 今回使いたいマザーウェーブレットはDaubechiesウェーブレット DaubechiesウェーブレットObjectを作成するまで Waveletオブジェクトのビルド Pywaveletではウェーブレットをオブジェクトとして作成する。 使えるウェーブレットはpywt.familiesの中に入ってる。 import pywt pywt.families() # ['haar', 'db', 'sym', 'coif', 'bior', 'rbio', 'dmey', 'gaus', 'mexh', 'morl', 'cgau', 'shan', 'fbsp', 'cmor'] for family in pywt.families(): print ("%s family:" %famil
1 次元スプライン補間の他にも様々な補間関数が SciPy には用意されています。 全ての点を通過する 1 変量の補間曲線を得るには、以下に示すような方法があります。 import numpy as np from scipy import signal, interpolate from matplotlib import pylab as plt # サンプルデータ作成 t = np.linspace(0, 10, 11) tt = np.linspace(0, 10, 51) y = np.sin(t) # 線形補間 f1 = interpolate.interp1d(t, y) y1 = f1(tt) # 2 次スプライン補間 f2 = interpolate.interp1d(t, y, kind="quadratic") y2 = f2(tt) # 3 次スプライン補間 f3
Pythonで音声信号処理(2011/05/14) 今回は、短時間フーリエ変換(Short-Time Fourier Transform: STFT)を実装してみます。音声信号スペクトルの時間変化を解析する手法です。ある一定の長さの信号サンプルを切り出し、それに窓関数をかけてからフーリエ変換という手順を切り出す範囲を少しずつずらしながら行います。音声を再生しながらリアルタイムにフーリエ変換する必要があるので高速フーリエ変換(2011/6/18)を使ってみます。最終的には、Windows Media Playerなどの音楽プレイヤーでよく見るスペクトルアナライザ(っぽいもの)を作ります。 窓関数 今まで離散フーリエ変換(2011/6/11)や高速フーリエ変換(2011/6/18)を試したときには、切り出した波形サンプルをそのままフーリエ変換していました。しかし、一般的に、切り出した波形に窓関
前回 までで fft 関数の基本的な使い方を説明しました。 しかし周波数解析を行うには、窓処理と呼ばれる前処理が大抵必要となります。 図1: 窓処理 測定データは N 点の長さの有限区間 \((0, N)\) で定義されていますが、フーリエ変換ではこれを無限区間 \((-\infty, \infty)\) で定義される三角関数の重なりで近似しようというわけです。 そのため、周波数解析では図 2 のように測定データを周期 N の周期信号の 1 周期と仮定しています。 しかし、図 2 のような 0 番目と N 番目の値と傾きが同じでないデータをフーリエ変換すると、本来含まれていない波長の波が解析結果に出てきて本来の周波数特性がぼやけてしまいます。 図2: 周期拡張した計測データ この問題に対処するため、測定データに窓関数を掛ける窓処理を行ないます。 この処理により図 3 のような滑かに繋る周期
全然進まない!音楽情報処理編w 前回はPythonで440Hzサイン波の音声ファイルを作りました。 今回は音声ファイルを読み込んでスペクトルの解析をしてみます。 スペクトルの解析とは、音データにどんな周波数のサイン波がどれくらい含まれているか?を観察することです。 で、実際どうやるのよ?というと。 微分積分、三角関数、オイラーの公式、関数の直交、指数関数…この辺りの話は省略w 前回も書きましたが、どんなに複雑な波形でも単純なsin/cos波を重ね合わせることで表現できるのが数学的に証明されているのでした。周期関数であればどんな関数でも三角関数の和による近似が可能→これをフーリエ級数展開といいます。 F(x)を周期2πの周期関数とすると、 \[ F(x) = \frac{1}{2}a_{0}cos0x + a_{1}cos1x + a_{2}cos2x + a_{3}cos3x + \cdo
PyCWT(v0.3.0a22)のTutorialを参考に、Niño 3 SST Indexのデータのウェーブレットパワースペクトルを可視化していく。尚、Jupyter notebook版も配置している。 下準備 ライブラリを読み込む。 分析対象データをダウンロードする。 メタデータを設定しておく。 ライブラリの読み込み ローカルでpycwtライブラリをインストールしてから、以下のライブラリを読み込む。 from __future__ import division import numpy as np import matplotlib.pyplot as plt import pycwt as wavelet from pycwt.helpers import find 分析対象データの読み込み Niño 3 SST Indexよりデータをダウンロードする。 url = 'http:/
Pythonで音声信号処理(2011/05/14) 今回は、信号処理の肝とも言える離散フーリエ変換(Discrete Fourier Transform: DFT)を試してみようと思います。ときどき感動するアルゴリズムに出会うけれど、フーリエ変換はその一つです。最初に考え出したフーリエさんはすごい!フーリエ変換を扱った本は参考文献に挙げている何冊かを読んだのですが、理解するのにけっこう苦労しました。ここでも間違ったこと書いていたらコメントもらえると助かります。 前回の正弦波の合成(2011/06/07)で試したように、任意の周期波形はさまざまな周波数を持つ正弦波の合成で表せます。フーリエ変換は各周波数の正弦波がどれくらいの割合で含まれているかを求める技術。ここら辺の定性的な理解は、 フーリエの冒険 今日から使えるフーリエ変換 (今日から使えるシリーズ) の説明が大変わかりやすかったです。ま
はじめに 今回は、特異スペクトル変換法というアルゴリズムをPythonで実装します。このアルゴリズムは時系列データの異常検知に対して非常に強い力を発揮します。また、ハイパーパラメータ(人が調整する必要のあるパラメータ)が少なく、比較的チューニングが容易であることも特徴の一つです。数学の理論については深追いはせず、アルゴリズムの概要と実装まで書いていきたいと思います。 【目次】 はじめに 時系列データについて 時系列データの異常と変化点検知 特異スペクトル変換法の概要 履歴行列とテスト行列 特異値分解 変化度の定義 Pythonによる実装 特異スペクトル変換法の課題 おわりに 時系列データについて 時系列データとは、時間の推移ととともに観測されるデータのことです。昨今、様々な企業がデータ活用を推進していますが、世の中の実務の現場に貯まっていく多くのデータは時系列のデータです。 データ分析にお
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く