メインコンテンツに移動

Python

MicroPythonとnumpy

Pythonつかうなら、Numpy?数値の演算や配列などでPythonで書く時、必ずこれを書く

import numpy as np

MicroPythonでもできるんでしょ?的な感じだったが、ググって読んでも読んでも難解・・コンピアルするとかビルドするとか、Linuxでとか書いてある。だから、Pythonこういうのが嫌いなんだけど。

最終的に、ビルド済みリリース版がここにあった。。picoもどきには、RPI_PICO.uf2を入れてみたらよかったようだ。これは、前回MicroPythonを入れる時に誘導されたファイルが RPI_PICO-20240222-v1.22.2.uf2 だったから、きっとこれだろうということだったわけだが、正解の模様

https://github.com/v923z/micropython-builder/releases

ラズパイPicoもどき

ElecrowのページでMicroPythonと記載があって安価だったので、買ってみた。YD-RP2040と書かれていてVCC-GND.COMとか、なにそれ。Picoと違うところは、WS8212が載っているところ?、Pico持っているわけではないし、ラズパイというものを使っているわけではないので、実はあまりよく知らない。安かったというのが一番の理由か

MicroPython

Macでシリアル通信

MacOSでシリアル通信したくなる。実際、マイコンボードなどを使ってプログラムをドロップすると勝手にリセットして接続が切られるため、勝手に外されたというエラーが表示され気持ちが悪い、またそのダイアログは消さないと自動で消えてくれないので、使い勝手は良くない。しかし、シリアル通信データを取得したいという要求は少なからずある。

terminal(ターミナル)を起動し、デバイスを見つける。

$ ls -l /dev/tty.*
crw-rw-rw-  1 root  wheel  0x13000000  3  2 20:53 /dev/tty.BLTH
crw-rw-rw-  1 root  wheel  0x13000002  3  2 22:25 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel  0x13000004  3 20 18:55 /dev/tty.usbmodem14201

このusbmodemなんちゃらが接続されたマイコンボードである。これに対して、"cu"コマンドで接続すればいいようだ。

またspyderが起動しなくなった(Mac)

ちょっとしばらくいじってなくて、OSアップデートもあったけど、またAnacondaからSpyderが起動しなくなった。一度目は起動したが、Terminalで

conda update conda

をやったところ、それ以降起動しなくなった。。Anacondaプロンプトにエラーが出される(****はMacのユーザー名)

2値のBMPモノクロ画像を作成する

あることで、2値画像を作る必要があった。ここで言う2値画像とは、白黒のbmpファイルで、bit深さが1のものである。

openCVでbmpファイルを2値で保存すると、値が0と255だけになった絵になり見た目はできているが、これだと、後処理で使いにくかった。1と0の2つの値からなる、1bit=1画素のbmpファイルにしたい。

どうも、openCVのsaveではそれはできなさそうだった。pillowライブラリを使うと可能。

S11のピークを見つける

いまひとつ、うまくやりたいことに到達しないんですがそれは自己の「ボキャブラリのなさ」ということなんでしょう、きっと

ピークを見つけるのに、scipyを利用する方法があるようです。前も調べたことがあるのだが、わかりにくいなぁ。低いピーク(谷)を見つけるのにargrelmin 、山を見つけるのに argrelmax 。引数のorderは、検出する範囲を指定するみたい。しかし、sパラのデータはログで掃引しているので下の方と上の方とでピークの位置をきちっと判定できない。ログでも判定できたらいいのにね、でもどういうアルゴリズムになるのか想像できないですけどね。

scikit-rfのデータを抽出する

s_magなどデータプロットは綺麗にできるようになったが、データをCSVなんかで保存できないかということを考えていた。Spyderで変数エクスプローラを見ると構造体の中にデータが入っているように見えて、そこを選択してエクセルとか貼り付けることはやっていた。

fが周波数、sが3D配列で見えていると思われる。

配列の要素を見つける

MATLABにはfindって関数があって、条件にあう要素のキー(インデックス)が返される。

Pythonには、numpyのwhereってのがあって、同様に返されるがキーそのものが返らなくて、ずっと解らなかったが、ようやく解った。

import bumpy as np

a=np.arange(5)

np.where(a==2)
# (array([2]),)

np.where(a==2)[0]
# array([2])

np.where(a==2)[0][0]
# 2

キーの配列が返るという意味だったのか!。ようやく理解した。

 

コロナ禍 行動自粛中

もうしばらく、行動自粛が続くものと思います。すこしづつ、制限は解除されてくと思いますが、前にも書いたけど働きかた改革の本当の意味で、この一部テレワークに変えつつ、業務効率化を目指して行って欲しいな。自粛制限がなくなったんで、3ヶ月前に戻して遅れた分大量残業でやってもらいますって、言いそうだな。いまだ、精神論だけでアホヌカす奴が多いからな!

で、Pythonista3ですが、一応、sceneなるライブラリを使うことで、アプリっぽくできましたね。字の色や、大きさや見た目感はもうちょっと工夫が必要ですが、まぁいいでしょう、ってことで。