FC2ブログ

motchyの備忘録

私にとっては大きな1歩だが、人類にとっては小さな1歩だ。

\[ %汎用 \newcommand{\st}{{\textrm{ s.t. }}} \newcommand{\set}[2]{\left\{\left.#1\right|\;#2\right\}} \newcommand{\naturalNumbers}{\mathbb{N}} \newcommand{\integers}{\mathbb{Z}} \newcommand{\realSpace}{\mathbb{R}} \newcommand{\complexSpace}{\mathbb{C}} \newcommand{\field}{\mathbb{F}} \newcommand{\func}[2]{{#1}\left({#2}\right)} \DeclareMathOperator*{\argmax}{arg\,max} %数論 \newcommand{\range}[2]{\{#1:#2\}} \newcommand{\abs}[1]{\left|#1\right|} \newcommand{\combi}[2]{{_{#1}\mathrm{C}_{#2}}} %解析学 \newcommand{\cl}[1]{\operatorname{cl}#1} \newcommand{\Img}[1]{\operatorname{Img}\left(#1\right)} \newcommand{\dom}[1]{\operatorname{dom}\left(#1\right)} \newcommand{\norm}[1]{\left\|#1\right\|} \newcommand{\floor}[1]{\left\lfloor#1\right\rfloor} \newcommand{\ceil}[1]{\left\lceil#1\right\rceil} \DeclareMathOperator{\sinc}{sinc} %逆三角関数 \newcommand{\asin}[1]{\operatorname{Sin}^{-1}{#1}} \newcommand{\acos}[1]{\operatorname{Cos}^{-1}{#1}} \newcommand{\atan}[1]{\operatorname{{Tan}^{-1}}{#1}} \newcommand{\atanEx}[2]{\atan{\left(#1,#2\right)}} %微分 \newcommand{\deriv}[3]{\frac{\operatorname{d}^{#3}#1}{\operatorname{d}{#2}^{#3}}} \newcommand{\derivLong}[3]{\frac{\operatorname{d}^{#3}}{\operatorname{d}{#2}^{#3}}#1} \newcommand{\partDeriv}[3]{\frac{\operatorname{\partial}^{#3}#1}{\operatorname{\partial}{#2}^{#3}}} \newcommand{\partDerivLong}[3]{\frac{\operatorname{\partial}^{#3}}{\operatorname{\partial}{#2}^{#3}}#1} \newcommand{\partDerivIIHetero}[3]{\frac{\operatorname{\partial}^2#1}{\partial#2\operatorname{\partial}#3}} %積分 \newcommand{\integ}[4]{\int_{#1}^{#2}{#3}\mathrm{d}#4} %複素解析 \renewcommand{\Re}[1]{\operatorname{Re}{\left[#1\right]}} \renewcommand{\Im}[1]{\operatorname{Im}{\left[#1\right]}} \newcommand{\Arg}[1]{\operatorname{Arg}{\left[{#1}\right]}} \newcommand{\Log}[1]{\operatorname{Log}{#1}} %ラプラス変換 \newcommand{\LPLC}[1]{\operatorname{\mathcal{L}}\left[#1\right]} \newcommand{\ILPLC}[1]{\operatorname{\mathcal{L}}^{-1}\left[#1\right]} %線形代数 \newcommand{\Span}[1]{\operatorname{span}\left[#1\right]} \newcommand{\Ker}[1]{\operatorname{Ker}\left(#1\right)} \newcommand{\rank}[1]{\operatorname{rank}\left(#1\right)} \newcommand{\inprod}[2]{\left\langle#1,#2\right\rangle} \newcommand{\matEntry}[3]{#1\left[#2\right]\left[#3\right]} \newcommand{\matPart}[5]{#1\left[#2:#3\right]\left[#4:#5\right]} \newcommand{\diag}[1]{\operatorname{diag}\left(#1\right)} \newcommand{\tr}[1]{\operatorname{tr}{#1}} %ベクトル %単位ベクトル \newcommand{\vix}{\bm{i}_x} \newcommand{\viy}{\bm{i}_y} \newcommand{\viz}{\bm{i}_z} %確率論 \newcommand{\PDF}[2]{\operatorname{PDF}\left[#1,\;#2\right]} \newcommand{\Ber}[1]{\operatorname{Ber}\left(#1\right)} \newcommand{\Beta}[2]{\operatorname{Beta}\left(#1,#2\right)} \newcommand{\GammaDist}[2]{\operatorname{Gamma}\left(#1,#2\right)} \newcommand{\ind}[1]{\mathbbm{1}\left\{#1\right\}} %指示関数 \newcommand{\cind}[2]{\ind{#1\left| #2\right.}} %条件付き指示関数 \renewcommand{\Pr}[1]{\operatorname{Pr}\left[#1\right]} \newcommand{\cPr}[2]{\Pr{#1\left| #2\right.}} \newcommand{\E}[2]{\operatorname{E}_{#1}\left[#2\right]} \newcommand{\cE}[3]{\E{#1}{\left.#2\right|#3}} \newcommand{\Var}[1]{\operatorname{Var}\left[#1\right]} \newcommand{\Cov}[2]{\operatorname{Cov}\left[#1,#2\right]} \newcommand{\CovMat}[1]{\operatorname{Cov}\left[#1\right]} %グラフ理論 \newcommand{\neighborhood}{\mathcal{N}} %プログラミング \newcommand{\plpl}{\mathrel{+}+} \newcommand{\pleq}{\mathrel{+}=} \newcommand{\asteq}{\mathrel{*}=} \]

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Ubuntu18.04 にて Logicool K380 の ファンクションキー の動作を普通にする

問題


Logicool K380 はデフォルトで上部のファンクションキーがメディアの再生・停止や音量調節などに割り当てられており、ファンクションキー本来の動作をさせるには左下の fn キーとの同時押しが必要である。WindowsとMac向けには Logicool options という設定ツールが公式に用意されているが、残念なことにLinuxには用意されていない。

希望の光


幸いにも、非公式ながら設定ツールを作って公開しているjergusgという方がいる。
https://github.com/jergusg/k380-function-keys-conf
上記リポジトリからDLしてビルドすれば使える。大変有難いツールなのだが、キーボードを再接続する度にシェルスクリプトを手動で実行しなければならない。OS起動時に自動実行するとしても、シャットダウンまでの間接続を維持するという条件が必要である。つまりK380の接続先を一度他のデバイスに切り替えて再びPCに戻ってきた時に、ファンクションキーの設定がリセットされてしまうため、やはり手動でシェルスクリプトを再実行せねばならない。

改良


そこで私はjergusg氏のツールを拡張する簡単なPythonプログラムを書いた。bluetoothデバイスの接続イベントを監視し、K380が接続される度にjergusg氏のツールを実行する。bluetoothctl というUbuntuのコマンドの標準出力が騒ぐことでトリガーが掛かる仕掛けになっているため、システムに負荷は殆ど掛からないはず。
https://github.com/motchy869/K380-fn-keys-auto-conf
使い方は簡単。jergusg氏のツールをビルドして出来上がった fn_on.sh と同じディレクトリに私のPythonスクリプトを置いてroot権限付きで実行するだけ。これで直ちにK380のファンクションキーの設定が普通になる。OS起動時にroot権限で自動起動されるように登録しておけば、次回以降は一切手間が掛からない。登録の仕方はこのページ(https://www.maketecheasier.com/run-bash-script-as-root-during-startup-linux/)が参考になる。
スポンサーサイト

テーマ:Linux - ジャンル:コンピュータ

  1. 2018/08/17(金) 08:32:53|
  2. Linux
  3. | コメント:0

Fibonacci数列の一般項をz変換で計算してみる

 高校でやるような数列の漸化式の中には、「定数係数差分方程式」に属するものがある。Fibonacci数列の漸化式はその一例である。今日はこれの一般項をz変換を使ってお手軽に計算してみる。

 Fibonacci数列を離散時間信号として次のように定式化する。
\[ x[0]=0,\;x[1]=x[2]=1,\;x[n+2]=x[n+1]+x[n]\;(n=1,2,\cdots) \]
z変換ではインデックス0も使うから、第0項も0として用意する必要がある。
漸化式は、z変換の言葉ではシステムの信号伝達のダイナミクスであり、初項は初期状態である。

今から漸化式の両辺をz変換するのだが、両側z変換を使うと初期値すなわち初項の影響が消えてしまい、解が0になってしまうから、右側z変換を使う。

$d\in\mathbb{N}$だけ進んだ信号のz変換の計算が必要になるので、先に確認しておく。$x[n]$のz変換を$X(z)$とすると次が成り立つ。
\[ \mathcal{Z}[x[n+d]](z) = \sum_{k=0}^\infty x[k+d]z^{-k} = z^d\sum_{k=d}^\infty x[k]z^{-k} = z^d\left(X(z) - \sum_{k=0}^{d-1}x[k]z^{-k}\right) \]
このことを用いて漸化式の両辺をz変換すると
\begin{align*}
z^2(X(z)-0-1/z) &= z(X(z)-0) + X(z) \\
\therefore\;(z^2-z-1)X(z) &= z \\
\therefore\;X(z) &= \frac{z}{z^2-z-1} = \frac{z}{(z-\alpha)(z-\beta)}\quad\left(\alpha=\frac{1-\sqrt{5}}{2}\,\;\beta=\frac{1+\sqrt{5}}{2}\right) \\
&= \frac{1}{\beta-\alpha}\left(\frac{z}{z-\beta}-\frac{z}{z-\alpha}\right)
\end{align*}
部分分数分解では、次のステップである逆z変換の為にわざと分子に$z$を残しておくのがコツ。
逆z変換により一般項$x[n]$が求まる。
\[ x[n] = \mathcal{Z}^{-1}[X(z)] = \frac{1}{\beta-\alpha}(\beta^k-\alpha^k) = \frac{1}{\sqrt{5}}\left[\left(\frac{1+\sqrt{5}}{2}\right)^k - \left(\frac{1-\sqrt{5}}{2}\right)^k\right] \]

テーマ:数学 - ジャンル:学問・文化・芸術

  1. 2018/05/12(土) 12:30:22|
  2. 複素解析
  3. | コメント:0

XperiaZ3Cの純正カメラアプリ無音化およびスクショ無音化(要root)

以下に述べるファイルを適当にリネームするか、或いは消す。 そうすればカメラのシャッター音だけでなくスクリーンショットのシャッター音も同時に無効化される。
system/media/audio/ui 内の下記4ファイル system/media/audio/camera/common 内の af_success.m4a
system/media/audio/camera/sound1 内の全ファイル

テーマ:モバイル - ジャンル:コンピュータ

  1. 2017/12/10(日) 00:30:12|
  2. 計算機
  3. | コメント:0

Get whole tree of GoogleDrive items at high speed, using BFS-search + batch processing (Python3)

Overview


Recently, I needed to get whole item tree in Google Drive automatically. I found Python3 can handle Google Drive REST v3 API. I came up with an following efficient method.

1.Get all nodes (include information: name, id, mimeType, parents) using files().get() method.
2.Refer each item's parent attribute, then connect to parent correctly.
3.Now you have a Spanning-Tree you wanted.

I run this method on my Google Drive which has 1754 files and 1028 folders, and it took only 17.3 sec to specify whole tree structure.

Preparation


To try codes shown below, you need some burdensome preparation. See this official guide.

code


テーマ:Python - ジャンル:コンピュータ

  1. 2017/11/02(木) 04:48:26|
  2. Python3
  3. | コメント:0

Linuxで作ったQtCreatorのプロジェクトをWindowsでコンパイルする

 また盛大にハマって時間を無駄にした。

症状


 Ubuntu上で作業していた QtCreator (Qt 5.9.2) のプロジェクトを Windows に持ってきて MSVC コンパイラでコンパイルしようとしたら意味不明なエラーが山ほど出た。もちろん OS に依存するような機能は使っていない。エディタ上ではコードは問題なく表示されているのだが、コンパイラーが「;が無ぇ! }が無ぇ! 〇〇.icoが無ぇ!」と叫び散らしている。要するに、エディタは文字コードと改行コードを正しく認識できているが、コンパイラが認識できていない。きっと SJIS の CRLF だと思ってコンパイルしようとしているのだろう。

解決策


 MSVC コンパイラに文字コードとして UTF-8 を指定できればいいのだろうが、方法がわからなかったのでプロジェクトファイル一式の文字コードを SIFT-JIS に、改行コードを CRLF に変えることにした。bash でプロジェクトフォルダに入り、次のコマンドを実行すればよい。WSLを使ってもいい。事前に nkf をインストールしておくこと。

find . -type f -name "*.h" -or -name "*.cpp" -or -name "*.pro" -or -name "*.qrc" | xargs -n 10 nkf --windows --overwrite


Linux 用に戻したければ --windows--unix に変えてもう一度実行すればよい。

副作用


 ビルドの問題は解決されるが、今度はエディタが「UTF-8 でデコードできない」と文句を言ってくるので、「ツール」->「オプション」->「テキストエディタ」->「Behavior」->「既定の文字コード」で System (多分これが SHIFT-JIS)を選択して解決する。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/10/16(月) 00:34:17|
  2. Qt5
  3. | コメント:0
次のページ

プロフィール

motchy

Author:motchy
愚か者

検索フォーム

最新記事

最新コメント

月別アーカイブ

カテゴリ

未分類 (1)
数学 (7)
実解析 (0)
複素解析 (3)
線形代数 (0)
確率・統計 (1)
グラフ理論 (1)
ベクトル解析 (1)
物理 (2)
力学 (2)
電子工作 (13)
LTSpice (3)
電源装置 (1)
2段式コイルガン (7)
misc(電子工作) (1)
プログラミング (35)
Python3 (2)
Qt5 (5)
GNU make (3)
Mathematica (6)
HSP (17)
Win32API (1)
Matlab (1)
計算機 (11)
CELSIUS-N465 (1)
X205TA (4)
nexus7 2012 (1)
XperiaZ3C(SO-02G) (0)
gigabeatV30T (4)
Linux (12)
Windows (1)
LaTeX (12)
MathJax (2)
Libreoffice (2)
Origin (3)
Tgif (4)
misc (8)
univ (0)

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。