pythonで自己MIC(相互情報量)関数を計算
自己相関関数では,ある信号sig(t)とその信号を時間kだけ遅延させた信号sig(t+k)との相関係数を計算するが,
ここでは相関係数の代わりに相互情報量(MIC)を求める関数automicを示す.
MIC自体はminepyで計算する.
下記プログラムを実行すると,グラフが2つ表示される.
""" 「自己」相互情報量(MIC)関数を計算する. 自己相関関数において,遅延と相関係数の関係を求めるように, 本関数では,遅延とMICの関係を求める. """ from minepy import MINE # MICの計算ライブラリをインポート from typing import List # 型表示における"List"を有効化 def automic(sig: List[float]) -> List[float]: """ sig[0](遅延させていない信号)とsig[k](k点遅延させた信号)との相互情報量を求める. :rtype: List[float] :param sig: 1次元の数値配列.時系列信号など. :return: 1次元の数値配列mics.mics[k]は遅延kにおけるMIC. """ mine = MINE() siglen = len(sig) mics = [] for k in range(0, siglen - 1): mine.compute_score(sig[k:-1], sig[0:-k - 1]) mics.append(mine.mic()) return mics if __name__ == "__main__": import numpy as np from matplotlib import pyplot as plt fs = 100 # サンプリング周波数 f = 4 # 周波数 tmax = 1 # 終了時刻[s] t = np.arange(0, tmax, 1 / fs) sig = np.sin(2 * np.pi * f * t) plt.plot(t, sig, marker=".") plt.xlabel("t [sample]") plt.ylabel("signal [a.u.]") plt.figure() mics = automic(sig) plt.plot(mics) plt.xlabel("delay k [sample]") plt.ylabel("MIC") plt.show()


haskellで逆引き辞書ソート
単語を羅列したファイルから『逆引き広辞苑』みたいにソートする.
import System.IO main :: IO () main = do hin <- openFile "test_words.txt" ReadMode -- 読みこむファイル:単語リスト hout <- openFile "reverse_idx.txt" WriteMode -- 書き込むファイル:逆引きソートした単語リスト contents <- hGetContents hin let rev_idx = reverseEachWords -- もう一度各単語を逆にする. [[String]] $unduplicate -- 単語リストをソートして↑ [[String]] $reverseEachWords -- 単語リストの各単語を逆にして↑ [[String]] $words -- 単語ごとにリストに分解して↑ [[String]] contents -- 単語リストの文字列contentsを↑ [String] mapM_ (hPutStrLn hout) rev_idx hClose hout hClose hin -- ソート,重複なくす unduplicate::Ord a => [a] -> [a] unduplicate []=[] unduplicate (xs:xss)=unduplicate smaller++[xs]++unduplicate larger where smaller = [a | a <- xss, a < xs] larger = [b | b <- xss, b > xs] -- 単語リストの各要素にreverseを適用する reverseEachWords :: [[a]] -> [[a]] -- [a]=String:1単語 reverseEachWords xs= map reverse xs
実行例
↓test_words.txt
alfabeta
alto
astrofisica
bistro
blanca
calimba
clasica
musica
temperatur
tenor
tradisional
traversa
上記プログラム実行後
↓reverse_idx.txt
calimba
clasica
astrofisica
musica
blanca
traversa
alfabeta
tradisional
bistro
alto
tenor
temperatur
梱包テープでトイレ詰まりを解消する
下記の動画を参考にして,トイレ詰まりを解消できた.
突然トイレの流れが悪くなった 驚異のセロハンテープだけで直す方法!超簡単 - YouTube
方法
- 念のため,「大」のレバーで水を流しても,水があふれない程度に水位を下げる(放置して水位が下がるのを待つか,便器から水をくむ).
- 便器のふたと便座を上げる.
- 便器のふちの水分や汚れを落とす(ふき取る程度).
- 梱包テープで膜を作るよう便器に貼り,密封する.
- 梱包テープは重なるように貼り,密封する.
- 完全に密封したら,レバーを回し,水を流す.
- 水が流れている間,便座内の圧力が上がり梱包テープの膜が膨らむが,手で押さえつける.
- 水が流れ終えるころには,つまりが解消する.
- 念のため,梱包テープをはがす前に1~3回水を流す.
- 貼った梱包テープをすべてはがす.
問題の状況
詰まった原因はおそらく,トイレットペーパーを流しすぎたため.
以前も,トイレットペーパーを流しすぎて詰まったことがあったが,
トイレ内の水位が上がった状態で放置すれば,自然に解消していた.
しかし,今回は水を流して放置しても,解消しない状態が24時間以上継続した.
そのため,今回の方法を実行した.
詰まりの度合は,流れが完全に止まっていたわけではない.
ただし,便器の返し近くまで水位が上がっても,普通の水位に戻るまで30分~1時間かかっていた.
流れないため,実用できない状態だった.
他に試した対処
梱包テープを用いる以外の対処も試したが流れなかった.以下に示す.
- ぬるま湯で流す.
- キッチンハイターを入れる.
- 酢を入れる.
使用したテープ
- 3M ガムテープ 梱包テープ 重量用 48mm×50m カッター付 315DSN
Amazonで購入した.購入,到着してから4か月弱経過したものを使用した.
今回このテープで便器を密封する際は,隙間ができないように,テープ同士の一部が重なるように貼ったが,
このテープ自体の強度があったため,二重に貼らなくても問題なかった.

Prilyさんの音列即興
音列: c g h
https://youtu.be/MEJs01hQVjI?t=1006
音列: h c f
https://youtu.be/MEJs01hQVjI?t=1114
音列: a h d
https://youtu.be/MEJs01hQVjI?t=1473
音列: d es g
https://youtu.be/MEJs01hQVjI?t=1729
音列: fis h a
https://youtu.be/MEJs01hQVjI?t=3249
音列: g cis fis
https://youtu.be/MEJs01hQVjI?t=5451
三点リーダーと感嘆符
# 「○○です…!」
「…」は無音あるいは余韻を表す.
「!」は「○○です…」全体を修飾する.
LCCのChart Aを理解したつもりになった過程
このサイト
コードで使うテンション(リディアン・クロマチック・コンセプト) : ジャズ理論
を読んで理解する予感を得て,原著を参照し一応理解した.
そして,soundquestのLCCのページを読んで,自身の理解と一致することを確認した.
さらに,原著のChart Aに,自身が理解した内容が含まれていることを確認し,
Chart Aが示すコードとスケールの対応の読み方が分かった.