FFTの応用であるSTFTを使ったスペクトログラムは周波数波形の時間変化がわかるため、音声解析でよく使われます。これまでWATLABブログではwavファイルや生成した波形からスペクトログラムをつくっていましたが、この記事ではリアルタイムにスペクトログラムを計算する方法を紹介します。
続きを読むNumPy
PyAudio/threading/Matplotlibでリアルタイム音声処理
Pythonを使えば、リアルタイムの音声録音と解析も簡単に行えます。まずPyAudioで音声を録音し、次にScipyでFFT(高速フーリエ変換)を使って解析を行います。しかし、これをスムーズに行うには並列処理が欠かせません。ここでは、Pythonのthreadingモジュールを駆使して、リアルタイムで音声を録音しながらFFT結果を表示する方法を紹介します。
続きを読む振動波形のヒルベルト変換から対数減衰率を求めるPythonコード
減衰自由振動現象の重要な特性に減衰率があります。減衰特性は物性から求めることが難しいので、実際に系を振動させて測定することが一般的です。ここでは減衰自由振動の波形に対してヒルベルト変換を行い、対数減衰率を計算するPythonコードを紹介します。
続きを読むPythonで2D移流拡散方程式を数値計算して拡散流れを表現する
これまで当ブログでは2Dの「移流方程式」と「拡散方程式」を扱いました。ここではこれら2つの流体現象を組み合わせた「移流拡散方程式」を学びます。いつも通りPythonでコーディングしながら解説を行い、流れを確認して理解を深めます。
続きを読むPythonで2次元拡散方程式を数値解析して定常解析と比較する
数値流体力学の学習は各要素毎に離散化手法と解析手法を学ぶことが重要です。ここでは2次元の拡散方程式の概要や離散化手法を説明し、Pythonで実装しながら学習します。結果は定常解析の結果と比較することでラプラス方程式にも触れてみます。
続きを読むPythonで2次元移流方程式を数値計算する方法
1次元移流方程式で基礎を学んだ後は2次元移流方程式を学びます。ここでは2次元移流方程式の差分化手法の例とPythonコードによるアニメーション作成までを行います。2次元の初期場を作る方法、漸化式の更新方法、結果のプロット方法について考えてみた結果を紹介します。
続きを読む連立方程式をSOR法で解くPythonコードと緩和係数のパラスタ
連立方程式を反復法で解くSOR法はガウス・ザイデル法よりも高速になる可能性を持ちますが、緩和係数(加速パラメータ)の調整が必要です。ここではPythonを使ってSOR法を実装し、緩和係数のパラメータスタディと最適な緩和係数との比較を行います。
続きを読むPythonで連立方程式をガウス・ザイデル法(反復法)で解く方法
連立方程式を反復法で解く方法として、直列ではヤコビ法より計算が速く終わるというガウス・ザイデル法を学びます。ここではガウス・ザイデル法がなぜ効率的なのかを式を用いて解説し、Pythonで実装しながら理解を深めます。
続きを読むPythonで連立方程式をヤコビ法(反復法)で解く方法
連立方程式の解法は直接法がわかりやすいですが、巨大な方程式の場合は計算時間が問題となります。ここでは直接法に比べ高速に連立方程式を解くことができる反復法の中で、比較的ポピュラーなヤコビ法を注意点と共に説明しPythonで実装してみます。
続きを読むPythonで拡散方程式を数値計算してアニメーションを作成する
熱流体分野の基礎学習として、拡散方程式の離散化と数値計算を行います。拡散方程式も移流方程式と同様に安定性の議論が必要です。ここではPythonを使って自分の手で実装しながら学習し、理解を深めるためにシミュレーション結果をアニメーションで確認するコードも紹介します。
続きを読む