日本語のテキストと音声を音素レベルで対応をとる強制アライメントツールpydominoを使ってみました。pydominoのインストールから使い方、音素対応表の紹介を行っています。また、実際に母音や子音を含む音声データを波形やスペクトログラムで可視化しながら結果の検証を行いました。
pydominoで日本語音声データの強制アライメントをやってみた
日本語のテキストと音声を音素レベルで対応をとる強制アライメントツールpydominoを使ってみました。pydominoのインストールから使い方、音素対応表の紹介を行っています。また、実際に母音や子音を含む音声データを波形やスペクトログラムで可視化しながら結果の検証を行いました。
PyTorchで始める手書き文字認識(MNIST)学習・検証コード
機械学習を活用したアプリ開発を学ぶ第一歩として、PyTorchを使った手書き文字認識(MNIST)に挑戦します。本記事では、モデルの学習から検証までのコードを習得しましょう。MNISTの学習ができるようになれば、自分のデータで学習モデルを作成することもできるようになります。
PythonでGUIアプリを作成できるPyQt5を使って、WATLABブログでは幾度も挑戦してきた音声分析ソフトをつくってみます。今回はChatGPTのヘルプももらってドラッグ操作やダブルクリック操作の実装、マルチウィンドウ機能といった本格的なGUIアプリにしてみました。
ラズパイ電子工作入門!Lチカで流れるウィンカーをつくってみた
電子工作分野のHello World!とも呼ばれるLチカ(LED点灯)をやってみます。ラズパイを使うとPythonでGPIOを使ったプログラミングが可能です。ただ光らせるだけだと面白くないので、この記事ではLEDを順番に光らせる「流れるウィンカー」をつくりながら動作原理を確認します。
ラズパイのPythonを最新にしてvenvとVSCodeを使う時のメモ
ラズパイ(Raspberry Pi)には最初からPythonが入っていますが、もともと入っているPythonはそのまま残して最新のPythonをインストールする方法をまとめます。さらに、venvを使った仮想環境の準備やVSCodeの準備も含め、一般的なPythonプログラミングができる環境を整えるところまでを紹介します。
Pythonで録音した音声をリアルタイムにスペクトログラム表示する
FFTの応用であるSTFTを使ったスペクトログラムは周波数波形の時間変化がわかるため、音声解析でよく使われます。これまでWATLABブログではwavファイルや生成した波形からスペクトログラムをつくっていましたが、この記事ではリアルタイムにスペクトログラムを計算する方法を紹介します。
M3 Macでvenv/VSCodeによるPython環境を構築するときの備忘録
2024年3月に新発売したM3チップ搭載のMacbookを最近購入したので、早速Pythonプログラミング環境を構築します。今回は主に自分用に最もポピュラーな仮想環境構築手法であるvenvとVSCodeによるPython環境構築の備忘録を残します。
「いきなりプログラミングPython」出版!著者による書籍制作のまとめ
WATLABブログからついに「いきなりプログラミングPython」という書籍が出版されました!この記事では著者watによる書籍制作のきっかけ、流れ、感想をつらつらとまとめておきます。貴重な「自分の本を出す」という体験を文章で伝えます。
PyAudio/threading/Matplotlibでリアルタイム音声処理
Pythonを使えば、リアルタイムの音声録音と解析も簡単に行えます。まずPyAudioで音声を録音し、次にScipyでFFT(高速フーリエ変換)を使って解析を行います。しかし、これをスムーズに行うには並列処理が欠かせません。ここでは、Pythonのthreadingモジュールを駆使して、リアルタイムで音声を録音しながらFFT結果を表示する方法を紹介します。
PandocとPythonで画像付きWord文書をMarkdownに変換する
MS-Wordは多くの企業で使われている文書ファイル作成ソフトですが、様々なプラットフォーム間で文書のやり取りをする場合に不便です。対してMarkdownはフリーでわかりやすく、多くのエンジニアに愛されています。ここではPandocとPythonを使って.docxをMarkdownに変換する方法を紹介します。
Pythonを使えば、普段の会話を精度良く翻訳するアプリも簡単につくることができます。まずspeech_recognitionによる音声認識技術を使い、音声をテキストに変換、そして次にdeep_transtatorを使ってテキストを任意の言語に翻訳します。ここではこれらを駆使したPythonプログラムの例を紹介します。
Python/librosaのピッチシフトで音楽のキーを変更する方法
音声のピッチ(音程)を変える方法の1つにピッチシフトという方法があります。Pythonのlibrosaというライブラリを使えば数行のコードでピッチシフトを行うことが可能です。ここではサンプルの音楽ファイルを使ってlibrosaのピッチシフトを使う方法を紹介します。
Python/SciPyで積分(1重/2重)した結果を可視化する方法
Pythonのscipy.integrate.quadやscipy.integrate.dblquadを使えば簡単に数値積分ができますが、当然結果はシンプルに積分値が返ってくるだけです。ここでは他者へ説明する目的で基本的な1重積分をはじめ、2重積分までのmatplotlibによる可視化方法を紹介します。
Pythonでルジャンドル多項式を使ってガウス積分をする方法
数値解析の分野ではガウス積分という求積手法がよく用いられます。ガウス積分はルジャンドル多項式を使って積分点と重みを算出しますが、初学者はまずこれらの概念を理解するのが難しいです。この記事では簡単な関数を題材にガウス積分を計算する方法をPythonコードと共に紹介します。
有限要素法は一般的に商用ソフトやオープンソースのライブラリを活用して「使う」ことが多いものですが、理解するためには自分でプログラミングするのが一番です。ここでは手計算でもできるレベルの問題をPythonによる有限要素法コードで解くことで、計算の流れを把握することを目指します。
Pythonの外部ライブラリultralyticsを用いれば、YOLOを使ってバウンディングボックスの描画だけでなく、高度な姿勢推定も実現可能です。この記事では、動画ファイルに対してposeモデルを利用した姿勢推定コードの作成と利用方法を分かりやすく紹介します。
SciPyのcurve_fitでデータを任意の関数に近似する方法
技術計算の分野では、測定されたデータを任意の関数にカーブフィットする需要が頻繁にあります。Pythonのscipy.optimize.curve_fitを使えば点列データを1次元や2次元の関数で簡単にフィッティングできます。ここでは様々な関数を例にcurve_fitを使ってみた内容を紹介します。
WindowsのWSL2でPython3/GetFEMを使ってみた
計算力学技術者試験の勉強のため、Pythonで使える有限要素法ライブラリGetFEMを使ってみました。GetFEMは通常Linux環境が必要ですが、WindowsでもWSLを使えばLinux環境を手にいれることができます。ここではWindows機でGetFEMを使う時のメモを紹介します。
Python/ultralyticsでYOLOv8をただ使ってみた
機械学習に強いPythonとはいえ、ゼロから精度の良い物体検出アプリをつくるのは骨が折れるでしょう。しかしultralyticsというライブラリを使えば数行のコードでキーとなる検出部分を書くことができます。ここではultralyticsを用いたYOLOv8の説明を行います。
Python/SpeechRecognitionで音声認識してみた
機械学習で有名なPythonを使って「音声認識」をしてみます。今回は初心者が最も導入しやすいSpeechRecognitionをインストールし、Googleのサービスを使ったGoogle Speech Recognitionによる音声認識プログラミング事例を紹介します。
SwiftUIで録音した音声を平均化FFTするアプリをつくってみた
今回もiOSアプリ制作シリーズです。これまで学んだ録音・再生・フーリエ変換・オーバーラップ・窓関数・聴感補正・dB変換を全部盛りにしてSwiftUIによる平均化FFTを実行するアプリを作ってみます。まずは個別のコードを紹介し、最後にコピペ可能な全コードを載せて実行結果を説明します。
フーリエ変換をする際、漏れ誤差の改善のために一般的に窓関数を用います。ここではiOSアプリ開発でも窓関数の適用ができるようSwiftによる窓関数の適用方法を紹介し、実際に時間波形に対して適用、グラフ表示まで行います。
先日の記事で回転機のアンバランス振動シミュレーションをPythonで行いました。振れ回り振動と参考書の対応がとれたので、次はより詳細な分析を行うために回転パルス(基準信号)をシミュレーションで設定してみます。ここではPythonのodeintで基準パルスを設定しながらアンバランス振動のシミュレーションを行う方法を紹介します。
回転機のアンバランス振動をシミュレートするPythonコード
工業製品である回転機はアンバランスを修正することで精密な回転を実現しています。しかし、アンバランスを真に0にすることは難しく、不釣り合い振動の影響をシミュレーションすることは重要です。ここではPythonのscipy.odeintを使ってアンバランス振動を解析する方法を紹介します。
長時間の信号処理を行う場合、信号を細かくフレームに区切り、さらにフレームを重ねながら信号を抽出するオーバーラップという手法があります。過去にPythonで実装したこのオーバーラップ処理を、今回はiOSアプリで動作させるためにSwiftで実装する方法と検証結果を紹介します。
iOSデバイスで高速フーリエ変換を実装する方法を紹介します。この記事では、まずはじめに一般的な高速フーリエ変換(FFT)であるCooley-Tukey法をSwiftで検証し、その後Accelerateというライブラリによる実装方法も併せて紹介します。
Pythonで高速フーリエ変換をCooley-Tukey法で書く
PythonにはNumPyやSciPyによる優秀な高速フーリエ変換(FFT)アルゴリズムがありますが、基本的なFFTの仕組みを学習するにもPythonは最適です。ここでは最も一般的なFFTアルゴリズムであるCooley-Tukey法をPythonのNumPyで記述し、numpy.fftの結果と比較します。さらに、データ点が2の冪乗でない場合のゼロパディング処理も実装します。
Pythonで検証しながらSwiftで離散フーリエ変換を実装する
離散フーリエ変換は単純な式で実装できる信号処理アルゴリズムです。Pythonは豊富なライブラリについ頼ってしまいますが、他の言語でも自由に実装できるように基本を学びましょう。ここではPythonであえてforループを使った離散フーリエ変換の方法を学び、次に同様の結果が得られるSwiftコードを紹介します。
SwiftUI/TabViewでスワイプによる画面遷移を実装する方法
モバイルアプリは画面が小さいため「画面遷移」があると便利です。特にタッチパネルに対応したiOSデバイスならスワイプ動作による画面遷移を使いたくなります。ここではSwiftUIのTabViewを使ってスワイプによる画面遷移機能を実装する方法や、各画面間におけるデータのやり取りについて説明します。
SwiftUIとAVFoundationで音声を再生する方法
Swiftで書いたコードに音声を再生する機能を追加します。音声の再生にはAVFoundationを使用し、SwiftUIで作成したボタンウィジェットと組み合わせましょう。ここではまず簡単な効果音を鳴らすコードを作成し、次に録音した音をそのまま再生する方法を紹介します。
SwiftUI/iOSアプリ:録音データをChartsでグラフ化する
iOSデバイスのマイクをAVFoundationで制御し録音機能を使えるようになりました。さらにSwiftUI標準のグラフ表示ライブラリであるChartsも学んだので、いよいよ録音した結果をグラフ表示させたいと思います。ここでは録音やグラフ表示に必要なSwiftUIコードを紹介します。
SwiftUI:iOS16から追加されたChartsでグラフを作成
iOS16、Xcode14から標準グラフ描画ライブラリにChartsが追加されました。ここではまだ情報が少ないChartsを使って、技術プログラムでは必須の散布図や折れ線グラフを作成する方法を紹介します。SwiftUI初心者の筆者が調べながら書いているので、同じく初心者の人に参考になると思います。
2022年12月に計算力学技術者の熱流体分野2級を受けて合格することができました。難しいけどマイナーなのでネットから手に入る情報が少ないです。技術ブログとして内容を記録するとともに、これから受験する人の参考に熱流体2級へ合格するまでに行った勉強量を紹介します。
SwiftでiOSアプリを開発するために、まずは基本的な使い方を学びます。ここでは最低限のプログラミングとして、構造体やループ、条件分岐や配列の処理を行い、必要に応じてPythonとの対応についても記載します。Swift初心者の方は是非参考にしてみてください。
SwiftでiOSデバイスのマイクを使って録音機能を追加する方法
Swiftを使ってiOSデバイスで録音アプリを作成しましょう。本記事では、Xcodeでプロジェクトを作成し、マイクを使った録音機能を実装する方法をわかりやすく解説します。iOSシミュレータやiPhoneでのテストまで、初心者でも安心して学べるよう、Swiftの基本操作も紹介します。
kivy_garden.graphを使ってiOS用にグラフを描く
Pythonでグラフを描くライブラリはmatplotlibが有名ですが、kivy-iosでiOSアプリをつくる時は利用が困難です。ここではkivy_garden.graphを使ってiOS環境でも動作するグラフプロットの方法を紹介します。
PythonアプリをiOSで実機テスト:kivy-iosの使い方
Pythonで開発したアプリをiOSデバイスで実機テストしたい場合、kivy-iosを使用できます。本記事では、kivy-iosの使い方や実機でのテスト方法などを詳しく解説します。必要なものや設定方法も紹介するので、初心者でも簡単に実践できます。
Pythonで多自由度振動系の過渡応答計算をする時はSciPyを使おう
このブログではしばらく自前のルンゲ・クッタ法を使って振動解析を行ってきました。しかしPythonで常微分方程式の数値計算をする時はSciPyのodeintを使った方が良いです。ここでは巨人の肩に乗るつもりでSciPy/odeintで振動問題を解くための例題を紹介します。
Pythonで非線形ばねを持つ1自由度振動系の周波数応答関数を求める
振動系の運動方程式において復元力項が非線形になった時、その周波数応答関数は特徴的な形を示します。この記事では非線形ばねを有する1自由度の運動方程式を題材に、ハードニング特性やソフトニング特性の周波数応答関数をPythonで解析する方法を紹介します。
PythonでDuffing振動子を解析してアトラクターを見る
Duffing振動子は非線形の2階常微分方程式です。この方程式をある特定のパラメータ下で解析すると特徴的な模様のアトラクターを観察できます。ここではDuffing振動子の概要と、Pythonによる計算方法を紹介し、自分の手でアトラクターを描くまでを目標とします。
はじめてのGit/GitHub!インストールからリポジトリの作成まで
Pythonに限った話ではなく、ある程度パッケージにしたアプリケーションのソースコードはバージョン管理をしたくなります。ソフトウェア開発で世界的なスタンダードになっているGitHubによるソースコードの管理について、初心者である筆者のメモ書きを残します。
kivyで作ったアプリをNuitkaでexe化する時のエラー対処例
Pythonプログラムの実行ファイル化(exe化)はPyInstallerが有名ですが、Nuitkaというライブラリも最近注目されてきました。ただやはり実行ファイル化はビルド時のエラーとの戦いが避けられません。この記事では筆者が直面して最終的に解決した方法を備忘録として記録します。
kivyでピーク検出機能付き簡易FFTアナライザを作ってみた
kivyはPythonのみでGUIアプリを開発可能なライブラリです。今回はPythonが得意とする信号処理分野のアプリとして簡易的なFFTアナライザを作ってみました。録音したデータの時間波形/周波数波形切り替えやピーク検出機能を実装しましたので、その詳細コードを紹介します。
kivyはモバイルにも対応したGUIアプリ開発ライブラリです。今回はモバイルアプリを意識して別ページで用意した設定画面をスワイプで呼び出せる録音アプリの作り方を紹介します。録音はPyAudio、波形表示はmatplotlibと連携しています。
kivyでmatplotlibを使う時にハマったので解決の備忘録
kivyはモバイルにも対応しているクロスプラットフォームGUIアプリ開発ライブラリです。科学技術関係のアプリを作る際、matplotlibによるプロットを利用したくなりますが、今回は筆者がインストールの時点でハマってしまったので解決方法を備忘録として残しておきます。
Python/kivyでGUIアプリ開発!基本の書き方を学ぶ
kivyはデスクトップやモバイルをはじめとした様々なプラットフォームでGUIアプリを開発できるライブラリです。ここでは基礎となる.kvファイルの書き方をはじめ、簡単なウィジェットを作成してイベントを設定することでkivyに入門することを目標とします。
Python/MoviePyで静止画に音声を付けて動画を作成する
wavやmp3といった音声ファイルを動画として公開したい時、Pythonの外部ライブラリであるMoviePyを使えばたった数行のコードで動画作成まで実現可能です。ここではサンプルファイルを使いながら、MoviePyを使った一連の画像、音声、動画処理方法を紹介します。
Pythonで簡単にwavファイルのノイズキャンセルを行う方法
マイクで音声を録音した時、録音環境によっては不快なノイズが入ってしまいます。Pythonの外部ライブラリであるnoisereduceは難しいコードなしに簡単にノイズキャンセルをかけることができます。実波形を例にその特徴を解説します。
振動波形のヒルベルト変換から対数減衰率を求めるPythonコード
減衰自由振動現象の重要な特性に減衰率があります。減衰特性は物性から求めることが難しいので、実際に系を振動させて測定することが一般的です。ここでは減衰自由振動の波形に対してヒルベルト変換を行い、対数減衰率を計算するPythonコードを紹介します。
3Dモデルの断面といった2次元画像の重心を求めることで、類似断面の形状ずれ等を求めることが可能です。重心は自分で計算することも可能ですが画像処理ライブラリであるOpenCVを使うと簡単に算出できます。ここではPython/OpenCVにて重心を計算する方法を紹介します。
力学系の問題を式展開する場合は文字式のまま書き進める場合がほとんどです。連立方程式を数値的にコンピュータで解くアルゴリズムは多々ありますが、文字式の検算には使えません。ここではPython/Sympyを使って文字式をそのまま扱って連立方程式を解く方法を紹介します。
Pythonで2D移流拡散方程式を数値計算して拡散流れを表現する
これまで当ブログでは2Dの「移流方程式」と「拡散方程式」を扱いました。ここではこれら2つの流体現象を組み合わせた「移流拡散方程式」を学びます。いつも通りPythonでコーディングしながら解説を行い、流れを確認して理解を深めます。
Pythonで2次元拡散方程式を数値解析して定常解析と比較する
数値流体力学の学習は各要素毎に離散化手法と解析手法を学ぶことが重要です。ここでは2次元の拡散方程式の概要や離散化手法を説明し、Pythonで実装しながら学習します。結果は定常解析の結果と比較することでラプラス方程式にも触れてみます。
1次元移流方程式で基礎を学んだ後は2次元移流方程式を学びます。ここでは2次元移流方程式の差分化手法の例とPythonコードによるアニメーション作成までを行います。2次元の初期場を作る方法、漸化式の更新方法、結果のプロット方法について考えてみた結果を紹介します。
2Dの流体解析をする時、計算領域内部に置いた構造物の影響を考慮したくなります。ここでは画像の輪郭から流体解析に使用できる境界条件を作る1つの例を、Pythonの流体解析コードと画像処理コードをコラボしながら考察してみたいと思います。
時間によって変化しない定常状態を示すラプラス方程式は様々な物理現象の基礎となっています。ここではラプラス方程式の差分化から説明します。また、学習の理解を深めるために簡単な2次元のラプラス方程式をPythonを使って数値計算する方法を紹介します。
連立方程式をSOR法で解くPythonコードと緩和係数のパラスタ
連立方程式を反復法で解くSOR法はガウス・ザイデル法よりも高速になる可能性を持ちますが、緩和係数(加速パラメータ)の調整が必要です。ここではPythonを使ってSOR法を実装し、緩和係数のパラメータスタディと最適な緩和係数との比較を行います。
Pythonで連立方程式をガウス・ザイデル法(反復法)で解く方法
連立方程式を反復法で解く方法として、直列ではヤコビ法より計算が速く終わるというガウス・ザイデル法を学びます。ここではガウス・ザイデル法がなぜ効率的なのかを式を用いて解説し、Pythonで実装しながら理解を深めます。
連立方程式の解法は直接法がわかりやすいですが、巨大な方程式の場合は計算時間が問題となります。ここでは直接法に比べ高速に連立方程式を解くことができる反復法の中で、比較的ポピュラーなヤコビ法を注意点と共に説明しPythonで実装してみます。
Pythonで拡散方程式を数値計算してアニメーションを作成する
熱流体分野の基礎学習として、拡散方程式の離散化と数値計算を行います。拡散方程式も移流方程式と同様に安定性の議論が必要です。ここではPythonを使って自分の手で実装しながら学習し、理解を深めるためにシミュレーション結果をアニメーションで確認するコードも紹介します。
Pythonで1次元移流方程式を離散化して数値流体力学に入門する
数値流体力学を学習して普段のCAEへの理解を深めたいと思います。ここでは入門レベルとして1次元移流方程式の紹介、偏微分方程式の離散化からPythonによる実装までを行います。さらにシミュレーション結果は動画で確認できるようにして理解を深めます。
PyVistaで2つのSTLサーフェス間距離を計測した事例集
3Dプロットやメッシュ解析のためのライブラリ「PyVista」を使うと簡単にSTLファイルを扱うことが可能です。STLファイルはモデリングだけでなく、比較用途にも需要があります。ここでは色々なSTLファイル2面間の距離を計測してみた例を紹介します。
アプリ完成編:wxPythonで信号処理のGUIアプリをつくろう⑥
Pythonによる信号処理のGUIアプリ作成挑戦記第6弾は「アプリ完成編」です。前回までで時間波形や周波数波形に関する一連の機能実装は完成しているため、細かい「軸設定機能」、「処理結果保存機能」を実装してアプリを完成させる方法を紹介します。
フィルタ処理編:wxPythonで信号処理のGUIアプリをつくろう⑤
Pythonによる信号処理のGUIアプリ作成挑戦記第5弾は「フィルタ処理編」です。ローパス/ハイパス/バンドパス/バンドストップをGUIで一度に実装するアイデア例とその例外処理方法を紹介します。既に実装しているフーリエ変換機能で効果を確認します。
スペクトログラム編:wxPythonで信号処理のGUIアプリをつくろう④
Pythonによる信号処理のGUIアプリ作成挑戦記第4弾は「スペクトログラム編」です。平均化フーリエ変換ができるとすぐ実装可能なSTFT計算を復習しながら、どうやってGUIプログラミングに組み込んでいくか、特有の例外処理も含めて紹介します。
Pythonで学ぶ周波数変調(FM)!変調式と特徴を見てみる
周波数が変動している信号を周波数変調信号(FM信号)と呼びます。ここでは周波数変調式と各パラメータの意味を紹介し、Pythonによるヒルベルト変換やフーリエ変換を駆使してAM信号とは異なるFM信号の周波数特性を観察してみましょう。
周波数波形編:wxPythonで信号処理のGUIアプリをつくろう③
Pythonによる信号処理のGUIアプリ作成挑戦記第3弾は「周波数波形編」です。読み込んだ時間波形に対し平均化フーリエ変換を施す処理をGUIで行います。今回は設定の読み込み、変更処理や例外処理も含めて実装する方法を紹介します。
波形読み込み編:wxPythonで信号処理のGUIアプリをつくろう②
Pythonによる信号処理のGUIアプリ作成挑戦記第2弾は「時間波形読み込み」です。wavやcsvをファイルダイアログで開く方法や信号処理クラスとのやり取りを通して、具体的にGUIプログラミングをする方法を模索します。
フレーム構築編:wxPythonで信号処理のGUIアプリをつくろう①
やっぱりGUIアプリを作ってみたいと思い、当ブログの信号処理関連コードの中で需要が高いフィルタ処理をソフト化してみます。ここでは初めてGUIアプリを作る人を対象に手順を追って作り方を説明します。是非みんなでGUIアプリを作れるようになりましょう。
wxPythonでGUIレイアウトを作り込む時に参照するページ
wxPython/wxFormBuilderを使ってGUIプログラミングを始めました。ここではウィンドウ処理やファイル処理をはじめとしたGUIプログラミングに必要となりそうな動作を一通り実装する方法を紹介します。目次から必要な項目が参照できます。
wxFormBuilderでwxPythonのGUIコード自動生成
PythonでGUIプログラミングをするのは結構面倒です。標準のTkinterは比較的簡単ですが、やはりレイアウトを作り込むのが面倒なのは変わりません。ここではwxPythonのレイアウトを自動コーディングしてくれるwxFormBuilderを紹介します。
Pythonブログ3年間継続!PV数等の気になる数字をまとめる
Pythonを何も知らない状態から始めたこのブログもついに初投稿から3年も経ちました。毎回1年毎に運営数字をまとめると共に、これまでの振り返りを行っていました。3回目も同じように読者の気になるPV数やあの数字をまとめてみたいと思います。
Python/memory_profilerでメモリ使用量を計測する
型指定やメモリ管理をしなくてもなんとなく動いてしまうPythonですが、いざメモリ関連の不調にハマってしまった場合に調べる手段を持っておかないと対処することができません。ここではmemory_profilerを使って実行時間とメモリ使用量のプロットを行う調査方法をメモしておきます。
csvの値から直列ばねマスモデルを自動生成するPythonコード
振動シミュレーションをプログラミングで行う場合、質量行列や剛性行列の記述が面倒です。しかし、ばね要素の結合と行列の重畳を理解する事で規則性を利用できます。ここではcsvに記録した質量や剛性の値を使ってPython/Numpy形式の行列生成を行う方法を紹介します。
計算力学技術者試験1級と2級(振動)を同時に受験して合格した感想
2021年12月に初めて計算力学技術者試験を1級と2級の併願で受け、なんとか両方とも合格することができました。難しいくせにマイナーな試験であまり受けた人の情報もないため、受験経験者として学習内容や感想を記録したいと思います。Pythonを活用した勉強もしています。
Pythonでクイックソートを実装する方法【動画作成方法付き】
Pythonで学ぶアルゴリズム、ソート第5段は「クイックソート」です。クイックソートは再帰的プログラミングを使って配列の種類によっては比較的高速にソートできるアルゴリズムです。ここではPythonで動画を作る方法を紹介しながら理解する事を目標とします。
現場でPC1つ!簡単に録音・FFT・wav保存するPythonコード
ものづくりの現場で、精密な計測器はないけど今すぐに音声を録音して周波数分析したい!さらにwavファイルに保存して後でゆっくり分析したい!というPython使いのための記事です。ここでは当ブログのコードを寄せ集めてこのようなニーズにマッチするプログラムを紹介します。
TrinketでWordPressにPythonを埋め込む方法
技術ブログを書いているPython使いのために、PythonをWordPressに埋め込む方法を紹介します。ここでは特別なWebプログラミングに関する知識を使わず、Trinketという外部サービスを使って簡単に埋め込みを実現する方法を試してみます。
商用ソフトの中にはテキストファイルで設定を用意するものが多くあります。テキストファイルをプログラム的に処理する事で業務自動化が可能です。ここではPythonを使ってテキストファイルの中身を特定のキーワードで検索し、任意の設定値を取得するコード例を紹介します。
テキストファイルは非常に汎用的で、テキストを読み込んだ後にプログラムで処理をしてから新しいファイルに保存したい場面が多くあります。ここではPythonによるテキストファイルの読み書き処理の基本をメモしておきます。
Pythonでマージソートの挙動を可視化してスッキリするページ
ランダムなデータをソートするアルゴリズムは動画にして観察するとなぜだか癒されます。マージソートをプログラミングするためには再帰処理も覚える必要があり勉強にもなります。という事で、ここではソートの中でも一際人気なマージソートをPythonで可視化しながら学びます。
【動画付き】Pythonで挿入ソートのアルゴリズムを実装する方法
Pythonで学ぶアルゴリズム、ソート第3段は「挿入ソート」です。挿入ソートは遅いソートに分類されますが、データの初期配置によって処理途中でbreakが効く分バブルソートよりも速くなる可能性があります。ここでは挿入ソートの図解と1からの実装によりそのアルゴリズムを学びます。
機械学習で回帰した2つの応答曲面を多目的最適化で探査してみた
単一の応答曲面上を遺伝的アルゴリズムで探査するコードを書いたので、次はトレードオフ関係を持つ2つの応答曲面間の多目的最適化に挑戦します。ここではPyTorchによる応答曲面の作成からPlatypusによる多目的最適化、結果の可視化まで全てPythonで書いた内容を紹介します。
最小二乗法は実験データに曲線をフィットさせる有効な手段です。直線や多項式が有名ですが、円状に分布したデータにカーブフィットさせたい時もあるでしょう。今回は最小二乗法を円の方程式に対して適用してカーブフィットするPythonコードを紹介します。
Pythonで2進数/8進数/16進数の基数変換を行うコード
Pythonで手を動かしながら基本情報技術者試験対策を行います。ここではコンピュータ内部の数値表現である2進数を始め、情報技術分野で重要となる8進数と16進数の概要を説明し、各基数変換を自由に計算できるようになる事を目標とします。
1つの応答曲面を遺伝的アルゴリズムで探査するPythonコード例
機械学習で応答曲面を求めた後、その曲面(学習済モデル)の最小値や最大値を探査したい場合があります。ここではPythonによる実現の例として、とりあえずPyTorchで機械学習→PlatypusのNSGA-IIで探査といった方法を試してみます。
PyTorchモデルをcloudpickleで保存・読み込みする方法
scikit-learnではpickleを使って学習済のモデルを保存したり読み込んだりできていましたが、PyTorchのモデルが読み込めない問題に直面したので解決方法をメモします。ここでは最も簡単だと感じたcloudpickleを使った方法を紹介します。
Pythonで二項係数を理解してベジェ曲線描画コードを実装する
ベジェ曲線はコンピュータグラフィックスの分野で曲線を描く時によく使われています。描画に使う数式を理解して自分で実装する事ができれば、自動作図や画像処理の幅が広がります。ここではベジェ曲線の数式を解説しながらPythonコードを紹介します。
積分で解くWi-FiパスワードをPython/sympyで計算する
Pythonのsympyでintegrateを使うと積分式も文字式のまま処理する事が可能です。ここでは例題としてとあるホテルのWi-Fiパスワードをsympyで解きながら使い方を確認していきます。
Platypusで多目的最適化からパレートフロントを求める方法
多目的最適化とは、2つ以上のトレードオフ関係にある複数の目的関数を同時に最適化する方法の事です。ここではPythonライブラリであるPlatypusを使って簡単な多目的最適化を行い、パレートフロントを求めるコードを紹介します。
Google ColabでPyTorch開発環境を構築する方法
ブラウザ上でGPUを使ったPython開発ができるGoogle Colaboratoryを使ってみます。ここでは知識ゼロから始められるようにGoogle Colabの概要から説明し、PyTorchによる機械学習を行うための環境構築を行います。
ただPythonでcsvから逆離散フーリエ変換をするだけのコード
Pythonとかよくわからないけど、今すぐ逆フーリエ変換をしなくてはいけない人向けの記事です。過去記事のフーリエ変換した結果を使って、振幅と位相情報から時間波形を再生する方法を解説します。入力と出力は全てcsvファイルで統一しました。
PyVistaで面が閉じた立体を作ってSTL保存する1つの例
これまで当ブログではPyVistaを使ってSTLを作ってきましたが、まだ欠落面が存在する3Dモデルでした。ここでは最後の仕上げとして欠落面を閉じた完全な立体を作成、そしてSTLファイルを保存するPythonコードを紹介します。
PyVistaで任意サーフェスメッシュを作成してSTL保存する
工学問題は複雑な形状をメッシュで分割して計算に利用する事が多々あります。この記事では形状やメッシュデータを扱う事が得意なPyVistaを使って任意サーフェスを作成し、デローニー三角形分割によりメッシュを作成します。そしてその他ソフトでの活用を目標にSTLファイルとして保存する所までを紹介します。
NACA4桁翼とは、航空機に使われている代表的な翼型の事です。空力性能が良い翼の設計は航空機業界だけの仕事ではなく、翼の断面形状を自由に作図できるようになる事で、色々な解析が捗ります。この記事はPythonでNACA4桁翼を作図する方法を紹介します。
MacにVirtualBox/Ubuntu環境を用意する方法
VirtualBoxを使う事で、同一コンピュータ内に複数のOSを仮想的に存在させる事が可能になります。ここでは、あえてMac内に仮想環境を使ってUbuntuを用意する理由とその構築方法を図付きで紹介します。
ただPythonでcsvからデジタルフィルタをかけるだけのコード
今すぐ、何も考えず、とにかくcsvに記録したデータに対しデジタルフィルタをかけたい人向け。ここではPythonを知らない人のための導入を説明してから、デモcsvファイルとコピペ動作するフィルタ処理コードを紹介して目的を最速で達成します。
回転数変化を模擬した周波数応答解析で次数分析するPythonコード
モータやエンジンといった回転機は構造の共振に当たらないように加振力を設計する必要があります。ここではPythonで回転数変化を模擬した周波数応答解析を行い、実験の次数トラッキング解析と比較できるシミュレーション結果を得る事を目標とします。
振動シミュレーションの代表的な解法の1つに周波数応答解析があります。この解析手法は時間領域ではなく周波数領域で計算をするため、一般的に計算負荷が軽いとされ実際の設計現場で重宝されています。ここではPythonで振動モデルを周波数応答解析で解く例を紹介します。
ベイズの定理から最尤推定法を導出してPythonで可視化してみる
データ同化の重要な考え方である変分法の基礎、最尤推定法を学んでみます。この手法は条件付確率を示すベイズの定理を理解する必要があるため、今回も図解付きの式導出とPythonによる体験を交えて説明します。
「ブログリーダー」を活用して、watさんをフォローしませんか?
日本語のテキストと音声を音素レベルで対応をとる強制アライメントツールpydominoを使ってみました。pydominoのインストールから使い方、音素対応表の紹介を行っています。また、実際に母音や子音を含む音声データを波形やスペクトログラムで可視化しながら結果の検証を行いました。
機械学習を活用したアプリ開発を学ぶ第一歩として、PyTorchを使った手書き文字認識(MNIST)に挑戦します。本記事では、モデルの学習から検証までのコードを習得しましょう。MNISTの学習ができるようになれば、自分のデータで学習モデルを作成することもできるようになります。
PythonでGUIアプリを作成できるPyQt5を使って、WATLABブログでは幾度も挑戦してきた音声分析ソフトをつくってみます。今回はChatGPTのヘルプももらってドラッグ操作やダブルクリック操作の実装、マルチウィンドウ機能といった本格的なGUIアプリにしてみました。
電子工作分野のHello World!とも呼ばれるLチカ(LED点灯)をやってみます。ラズパイを使うとPythonでGPIOを使ったプログラミングが可能です。ただ光らせるだけだと面白くないので、この記事ではLEDを順番に光らせる「流れるウィンカー」をつくりながら動作原理を確認します。
ラズパイ(Raspberry Pi)には最初からPythonが入っていますが、もともと入っているPythonはそのまま残して最新のPythonをインストールする方法をまとめます。さらに、venvを使った仮想環境の準備やVSCodeの準備も含め、一般的なPythonプログラミングができる環境を整えるところまでを紹介します。
FFTの応用であるSTFTを使ったスペクトログラムは周波数波形の時間変化がわかるため、音声解析でよく使われます。これまでWATLABブログではwavファイルや生成した波形からスペクトログラムをつくっていましたが、この記事ではリアルタイムにスペクトログラムを計算する方法を紹介します。
2024年3月に新発売したM3チップ搭載のMacbookを最近購入したので、早速Pythonプログラミング環境を構築します。今回は主に自分用に最もポピュラーな仮想環境構築手法であるvenvとVSCodeによるPython環境構築の備忘録を残します。
WATLABブログからついに「いきなりプログラミングPython」という書籍が出版されました!この記事では著者watによる書籍制作のきっかけ、流れ、感想をつらつらとまとめておきます。貴重な「自分の本を出す」という体験を文章で伝えます。
Pythonを使えば、リアルタイムの音声録音と解析も簡単に行えます。まずPyAudioで音声を録音し、次にScipyでFFT(高速フーリエ変換)を使って解析を行います。しかし、これをスムーズに行うには並列処理が欠かせません。ここでは、Pythonのthreadingモジュールを駆使して、リアルタイムで音声を録音しながらFFT結果を表示する方法を紹介します。
MS-Wordは多くの企業で使われている文書ファイル作成ソフトですが、様々なプラットフォーム間で文書のやり取りをする場合に不便です。対してMarkdownはフリーでわかりやすく、多くのエンジニアに愛されています。ここではPandocとPythonを使って.docxをMarkdownに変換する方法を紹介します。
Pythonを使えば、普段の会話を精度良く翻訳するアプリも簡単につくることができます。まずspeech_recognitionによる音声認識技術を使い、音声をテキストに変換、そして次にdeep_transtatorを使ってテキストを任意の言語に翻訳します。ここではこれらを駆使したPythonプログラムの例を紹介します。
音声のピッチ(音程)を変える方法の1つにピッチシフトという方法があります。Pythonのlibrosaというライブラリを使えば数行のコードでピッチシフトを行うことが可能です。ここではサンプルの音楽ファイルを使ってlibrosaのピッチシフトを使う方法を紹介します。
Pythonのscipy.integrate.quadやscipy.integrate.dblquadを使えば簡単に数値積分ができますが、当然結果はシンプルに積分値が返ってくるだけです。ここでは他者へ説明する目的で基本的な1重積分をはじめ、2重積分までのmatplotlibによる可視化方法を紹介します。
数値解析の分野ではガウス積分という求積手法がよく用いられます。ガウス積分はルジャンドル多項式を使って積分点と重みを算出しますが、初学者はまずこれらの概念を理解するのが難しいです。この記事では簡単な関数を題材にガウス積分を計算する方法をPythonコードと共に紹介します。
有限要素法は一般的に商用ソフトやオープンソースのライブラリを活用して「使う」ことが多いものですが、理解するためには自分でプログラミングするのが一番です。ここでは手計算でもできるレベルの問題をPythonによる有限要素法コードで解くことで、計算の流れを把握することを目指します。
Pythonの外部ライブラリultralyticsを用いれば、YOLOを使ってバウンディングボックスの描画だけでなく、高度な姿勢推定も実現可能です。この記事では、動画ファイルに対してposeモデルを利用した姿勢推定コードの作成と利用方法を分かりやすく紹介します。
技術計算の分野では、測定されたデータを任意の関数にカーブフィットする需要が頻繁にあります。Pythonのscipy.optimize.curve_fitを使えば点列データを1次元や2次元の関数で簡単にフィッティングできます。ここでは様々な関数を例にcurve_fitを使ってみた内容を紹介します。
計算力学技術者試験の勉強のため、Pythonで使える有限要素法ライブラリGetFEMを使ってみました。GetFEMは通常Linux環境が必要ですが、WindowsでもWSLを使えばLinux環境を手にいれることができます。ここではWindows機でGetFEMを使う時のメモを紹介します。
機械学習に強いPythonとはいえ、ゼロから精度の良い物体検出アプリをつくるのは骨が折れるでしょう。しかしultralyticsというライブラリを使えば数行のコードでキーとなる検出部分を書くことができます。ここではultralyticsを用いたYOLOv8の説明を行います。
機械学習で有名なPythonを使って「音声認識」をしてみます。今回は初心者が最も導入しやすいSpeechRecognitionをインストールし、Googleのサービスを使ったGoogle Speech Recognitionによる音声認識プログラミング事例を紹介します。
MS-Wordは多くの企業で使われている文書ファイル作成ソフトですが、様々なプラットフォーム間で文書のやり取りをする場合に不便です。対してMarkdownはフリーでわかりやすく、多くのエンジニアに愛されています。ここではPandocとPythonを使って.docxをMarkdownに変換する方法を紹介します。
Pythonを使えば、普段の会話を精度良く翻訳するアプリも簡単につくることができます。まずspeech_recognitionによる音声認識技術を使い、音声をテキストに変換、そして次にdeep_transtatorを使ってテキストを任意の言語に翻訳します。ここではこれらを駆使したPythonプログラムの例を紹介します。
音声のピッチ(音程)を変える方法の1つにピッチシフトという方法があります。Pythonのlibrosaというライブラリを使えば数行のコードでピッチシフトを行うことが可能です。ここではサンプルの音楽ファイルを使ってlibrosaのピッチシフトを使う方法を紹介します。