粗大メモ置き場

個人用,たまーに来訪者を意識する雑記メモ

MATLABでNaNやInfを何とかしたい

ダジャレみたいな軽い記事です。

NaNを0に置換

Aという行列の中にNanがあってそれを0にする場合,以下のように書きます。

A(isnan(A))=0

なお,matlabではfor文はべらぼうに時間がかかるので
なるべく行列のまま処理したほうが計算時間の節約になります。

Infを0に置換

Aという行列の中にInfがあってそれを0にする場合,以下のように書きます。
なお,-Infも同様です

A(~isfinite(A))=0

種明かし

isnan(A)

というコマンドは行列Aのうち,Nanがある所を1,無い所を0の「論理値」で出力します。
はい,ここ重要です。
行列に論理値を食わせることで該当する箇所の値を参照できるらしいです。
なるほど~。

よくわからんので実験

以下のコードで実験してみました。

3*3の魔法陣を作ります。

Magi =[ 8  1  6; 3  5  7; 4  9  2]

代入するのは代数値でなければなりません。
例えば代数値の対角行列を入れてみる。

 Magi(diag([true true true]))

結果,ans = 8,5,2 と見事に対角の値だけにアクセスしています。

ならば,一つだけ食わせるとどうか?
なんと先頭の値にアクセスします。

 Magi(true)

結果:ans = 8

そして数値を足してずらせるようです。ポインタみたいだな。

 Magi(true+1)

結果:ans = 3

行 → 列の順に格納しているのがわかります。

 Magi(true+3)

結果:ans = 1

ほらね。


また,こんなことも出来ます。

Magi(true,true+1)

結果:ans = 1

う~ん,true=1として処理してるだけに見えてきた。

Infの方はなんか出力が逆ですが基本やってることは同じです。
ほ~ん。

Tex : 定理や式分岐などを書くセット (dcasesを使おう)

よく忘れるのでこの際テンプレとしてメモ。
特にcasesで分岐のフォントが小さい時にdcasesというパッケージがある(&styファイルが異なる)のは初耳でした。

定理を書くtheoremのテンプレ。screenの四角付き。

\begin{screen}
\begin{theorem}
	関数 $ f(x,y)$ において点 $ (a,b)$$ f_x(a,b)=0$,  $ f_y(a,b)=0$ をみたすとき, $ f(a,b)$ が極値となるための判定条件は次の通りである.\\ 
	但し,$\displaystyle D(a,b)=f_{xy}(a,b)^2-f_{xx}(a,b)f_{yy}(a,b)$とする。
	\begin{enumerate}
		\renewcommand{\labelenumi}{(\roman{enumi}).}
	\item $ D(a,b)<0$,  $ f_{xx}(a,b)>0$ のとき, $ f(x,y)$ は点 $ (a,b)$ で極小値をとる.
	\item $ D(a,b)<0$,  $ f_{xx}(a,b)<0$ のとき, $ f(x,y)$ は点 $ (a,b)$ で極大値をとる.
	\item $ D(a,b)>0$ のとき, $ f(x,y)$ は点 $ (a,b)$ で極値をとらない.
	\item $ D(a,b)=0$ のとき,個別に判定する.
	\end{enumerate}
\end{theorem}
\end{screen}

こうなります。
f:id:ossyaritoori:20170113001621p:plain

式分岐を書く,caseのテンプレ。

\dfrac{\partial^2 \bm{J}}{\partial \theta_{1x}\partial \theta_{1y}} = 
\begin{cases}
-\omega_{yx} \leq 0 & (y < x, x \neq 2)\\
-\omega_{xy} \leq 0 & (y > x, x \neq n)
\end{cases}

こうなります。
f:id:ossyaritoori:20170113001702p:plain

場合分けでは見た目的にはdcasesを用いた方が良い

mathtool.styをインクルード。

\usepackage{mathtools}

dcasesと書くだけです。

\dfrac{\partial^2 \bm{J}}{\partial \theta_{1x}\partial \theta_{1y}} = 
\begin{dcases}
-\omega_{yx} \leq 0 & (y < x, x \neq 2)\\
-\omega_{xy} \leq 0 & (y > x, x \neq n)
\end{dcases}

この書き方だとわかりませんがw
Σなどを用いているなら違いがわかると思います。
f:id:ossyaritoori:20170113011020p:plain

Tex 改行をまたいで括弧をつける

Tex小ネタです。

 \left\{ xxxxxxxxx \right\}

と書いて大きい括弧を書けるのは周知のとおりですが,これに対して次のように改行を挟むとエラーが出ます。

 \left\{ xxxxxxxxx \\
 yyyyyyyyy  \right\}

解決法は,\left.\right.を用いて以下のように書きます。地味にめんどくせぇ…

 \left\{ xxxxxxxxx \right. \\
 \left. yyyyyyyyy  \right\}

iTunesを用いたバックアップからの復元・データ移行 -セッションが失敗したため、iTunesはiPad”xxx”を復元できませんでした-の解決

実家に帰ったら親にiPadのデータ移行をしてほしいと頼まれました。
なんだそれだけかと思ったらこれがなかなかうまく行きません。

iTunesを用いたiPhoneiPadのバックアップ,復元の注意点

詳細な手順は他のサイトを見てもらうとして,この際に気をつけるべきは

- 使用しているiOSiTunesは正しくアップグレードされているか
OSやiTunesのバージョンが異なるとエラーの元なので一度環境を整えてからやってみてください。

ちなみにソフトを最新にした後のウチの環境は,
PC:windows7
メモリ:2G
CPU:Corei3(4年前くらいの)
です。メモリ2Gって…orz

それでもうまくいかない!

うちはそれでもうまく行きませんでした。

復元をボタンを押してもしばらくすると
iTunesiPad”xxx”を復元できませんでした』のエラーが出ます。

そこで以下のサイトの情報を見つけました。
セッションが失敗したため、iTunesはiPhone”xxx”を復元できませんでした。iPhoneの復元ができない。 | Astro.jp

解決法は,,,

”バックアップから復元中”のwindowをクリック,ドラッグし続ける!

な,何を言っているのかわからないと思うが(以下略
f:id:ossyaritoori:20170102010912p:plain:w200

試しにwindowをポチポチクリックとドラッグしていたらこれが実際効いたんです!
対象のプロセスを常に最優先にしていないとリソースが足りなくなる的な何かなんでしょうか。


このままでは時間と労力をとても消費します…
うちのは1時間くらいかかったので人力ではやめたほうが良さそうです。

自動でクリックし続けるソフト(簡単)

クリック動作を自動でやってくれるものとして,
連打くんというツールがあるみたいです。
Vector:連打くん (WindowsMe/98/95用ソフト / ユーティリティ)

上記のURLでダウンロード可能です。

フリーソフトなので自己責任で管理をお願いします。

簡単操作かつ強力だったので以降これでやっていきます。

f:id:ossyaritoori:20170102020324p:plain

UWSC を使う(経験者向け)

同種のソフトにUWSCがあります。こちらは任意にプログラム可能であるため,もっと凝った操作が可能です。
自動ツール作成経験者はこれを使ってもいいでしょう。(私も持ってますがやらない)

また,AutoClickPositionsというソフトを用いてみましたがクリック頻度が低くおすすめできません。

Pythonで書く(暇人向け)

Pythonインスコしているなら自分で自動クリックプログラムを書くことができます。
以下に基本ルーティンを書きます。
マウスの座標をうまく取得してループで回せばきっとなんとかしてくれることでしょう。

正直pythonインスコ出来てて,まともに動くPCなら上記問題は起きないかと思いますが。

# -*- coding: utf-8 -*-
from ctypes import *
user32 = windll.user32
import time
 
if __name__ == "__main__":
    #ここから処理
    x = 0 #座標指定
    y = 0
    user32.SetCursorPos(x,y) #カーソル座標移動
    user32.mouse_event(0x2,0,0,0,0) #左クリックを押す
    time.sleep(0.2) #0.2秒待機
    user32.mouse_event(0x4,0,0,0,0) #左クリックを放す

『連打くん』を使った復元成功法

予め言いますがこの作業は通しで10時間以上かかります。急ぎでなくかつPCを触らない就寝時などに行ってください。
連打くんを用いることで時間を大幅に短縮!
すごいぞ!連打くん!

プログラムを解凍してexeファイルを実効すると,
f:id:ossyaritoori:20170102020324p:plain
のような画面が出ます。

クリック間隔を1秒前後にして,「F9」を押すと自動でクリックし始めます。
従って入れる数字は1000より少し小さいくらいがおすすめです。
そして「F10」をおして終了します。

コツ

最初の「かかる時間を計算しています」のところが1番シビアな印象です。
ここは人力でwindowをクリックした方が良いかもしれません。

その後残り時間が表示されるようになったら連打くんにまかせる,といった手法を取りました。

おまけ

クリック間隔とかかる時間の関係。

  • クリック間隔:3秒 → かかる時間25時間(推定)
  • クリック間隔:0.8秒 → かかる時間1時間(推定)

なんなんだ。

まとめ

  • バックアップの復元で困ったときはウインドウをクリックし続けると良い。
  • フリーソフト「連打くん」を使って連打させよう。
  • 古いパソコンは買い換えよう。
  • iTunesきらい。

opencv_2410core.pdb not found とか出たら

安心してください。基本的にはあなたのプログラムの何処かでセグフォってます。
ただそれだけです。

このpdbファイルのサーバーとか関係なしにこのエラーがでることがあります。
何が言いたいかって言うとVisualStudioは滅べってこと。

勝った気になる勝利BGMの個人的メモ

※この記事はオタクコンテンツや子供っぽい内容を含みます。

勝利BGM

定義:アニメや映画などで問題が解決したなど好転した際に流れる音楽

性質上,バトル物に多く収録される傾向にあります。
メジャーなものが多いですがマイナーな奴らは探すのが大変なので…


勝利BGM - YouTube

種目別BGM紹介

ロックぽいやつ

ジョジョから2つほど。お仕置きBGMとも呼ばれていますね。
www.youtube.com
www.youtube.com

テクノっぽいやつ

いろいろここに入れていいか迷ったんですけどね。

まどか☆マギカより,マミさんのテーマ。
いや,これ流れたら「勝った!」って思うじゃん…?
www.youtube.com

アニメ版ピンポンより。これもすごくカッコイイ。ぜひ見てください。
www.youtube.com

お祭り風

要はNARUTO系です。NARUTOのBGMもアツイの多いですけど,勝った気になるのは以下のやつかな。
www.youtube.com
www.youtube.com

これも挙げるとキリがないですね。

オーケストラ風

グレンラガンより。爽やかなオーケストラのサウンドが良い。
www.youtube.com

フルメタル・パニックTSRより。本編も見てください。是非。
www.youtube.com

遊戯王より「熱き決闘者たち」。オシリスの天空龍!!(意味不明)
www.youtube.com

FlipFlappersより「Trading Places」大逆転の意味。個人的激推し。
www.youtube.com



まどマギ映画版より。勝利?いやしかし雰囲気で加えておきたかった。
www.youtube.com

ジャズ?

ロックマンエグゼより。これじゃないやつも好きなんですけど見つからない。
www.youtube.com

コナンのアレ。作業中にこれ流れたら帰って寝たくなるな…
www.youtube.com

ポケモン

ポケモンのBGMは流石わかりやすさに降ってる感じがあって好きです。
抜けるような爽やかなサウンドが個人的にお気に入り。
機会があったらCD買おうかなってくらいです。あんまり語るとこれだけで記事がかけそう。

www.youtube.com
www.youtube.com
www.youtube.com
www.youtube.com
ンギモッヂイイ!!

歌あり

歌があるとBGMとしてはちょっとアレなんですけどノれる曲は多いです。

Bleachより。余談ですが小さい頃Bleach見た時はそのオサレさに感服したのを覚えてます。
www.youtube.com
ソウルイーターより。岩崎琢バンザイ。
www.youtube.com
キルラキルより。サビの所をよく聞いたかと思います。
www.youtube.com

終わりに

地味に疲れた…おすすめあったら教えてください。
今期だとフリップフラッパーズの勝利BGMとか加えたいしアクティブレイドとかもw。
あと焼き立てジャパンのあれとか加えたかったけどどこいったんだろ。

【卒論・修論】 分割Texファイルを単体でもコンパイルできるようにする(docmuteパッケージ)

みなさん卒論・修論書いてますか?
私はね,こないだフォルダを作りました。今回はファイル分割の話を少しします。

2016/12/27追記:\includeがうまく機能しない?→\inputを使う。

大規模な文ではソースを分割すべき

卒論修論になると数十から百ページ超の長い文章を書くことになるかと思われます。
こういう場合は複数のtexソースに分けてコンパイルするのがおすすめです。

普通のやり方ではmasterのtexファイルをコンパイルしてincludeされている分割ソースをそれぞれコンパイルしていきます。
ただ,これだと一つの章を作った場合にどのようになるのか確認することができません。

docmute パッケージを使う。

以下の記事を参考にしました。
d.hatena.ne.jp


masterファイルのプリアンブルに

\usepackage{docmute}

と書くことで,\documentclass~で始まる文書の外側を無視してくれます。
従って単体でもコンパイルできるように書きつつ,masterからのincludeを阻害しないようにすることができます。

docmute.styの導入

styファイルは以下のURLで取得できます。
ftp://ftp.u-aizu.ac.jp/pub/tex/CTAN/macros/latex/contrib/docmute/docmute.sty

これをディレクトリのpathのある所に置くか,以下の記事を参考に置けば完了です。
styファイルを置く場所・置いた後にすること - 粗大メモ置き場

実用的にはプリアンブルも\includeしてしまう

分割ソースも単体でコンパイルできるようにするには使用するパッケージやマクロなどの宣言をいちいち書き込む必要があります。
これではせっかく項目ごとに分けたのに非常に見づらくなってしまいます,
そこでプリアンブルは 「 preamble.tex 」などのソースにまとめてしまい,以下のように簡略化するのが良さそうです。

12/27訂正:\includeから\inputに変更。
両者のコマンドは改行するしない程度の違いがないはずですが,プリアンブルの挿入では\inputの方が良いようです。

\documentclass[fleqn]{jreport}
\input{preamble}

\begin{document}

本文

\end{document}

とりあえずこれで書き始めてみますか。

実際にぶち当たったバグ

・preamble.texにもろもろのパッケージなどを記述したはずなのに読んでくれるときと読んでくれない時があります。
・masterファイルがTexStudioによって開かれてるか否かで挙動が変わることもあります。謎。
・プリアンブルはinputの方が安定するというかincludeだとどうもうまく行かないようです。参考までに