2016年12月22日木曜日

HHKB(Happy Hacking KeyBoard)のプリントスクリーン

HHKB(Happy Hacking KeyBoard)には"プリントスクリーン"キーは当然ありません.
HHKBでプリントスクリーンを行うには,

  画面全体: [Fn]+[i]
  アクティブになっているウインドウのプリントスクリーン:[Alt]+[Fn]+[i]

とします.

因みに,Macでは
  画面全体:Shift+⌘+3
  アクティブになっているウインドウのプリントスクリーン:Shift+⌘+4
となります.

2016年12月2日金曜日

画像形式,ファイルサイズの一括変換

Adobe Bridgeを用いて,画像形式,ファイルサイズの一括変換を行う際のメモ.

Adobe Bridgeを起動して,対象画像が入っているフォルダを開き,変換したいファイルを選択する.

  "Tools" > "Photoshop" > "Image Processor"を選択する.

Photoshopが起動して,"Image Processor"ウィンドウが表示されるので,保存したいファイル形式を選ぶ.

ファイル形式として「JPEGとして保存」にチェックする.
「サイズを変更して合わせる」に適切なサイズを入力する.
実行をクリックする.


2016年12月1日木曜日

[Mac] macOS Sierra にインクスケープをインストール

Inkscapeは,Xquartzで動作するソフトなので,まずは,Xquartzのインストールが必要です.

Xquartz のインストール

  • Xquartzのダウンロードサイトから,.dmgファイルをダウンロードする.
  • dmg ファイルを開き, pkg ファイルをダブルクリックする.
  • Xquartzのインストールが終了したら,再起動する(ログアウトして再度ログインしても良い).
  • X11 を起動する.
  • inkscapeのX11設定を参考にX11のキー入力とクリップボードの設定を変更する.


Inkscape のインストール

  • Inkscape のサイト内のダウンロードページから.dmgファイルをダウンロードする.
  • .dmg を開いて,Inkscape のアイコンをApplicationに 移動する.
  • /Application の Inkscape.app を起動する(起動には結構時間がかかります).


2016年11月30日水曜日

[Mac] MacOS SierraにLapackをインストール

gfortran(gcc)がインストールされている前提とします(gfortanのインストールはこちら
念のために,gforttanが /usr/local/bin から実行されていることを確認するために,ターミナルから,以下のコマンドを実行します.
$ which gfortran
/usr/local/bin/gfortran

Lapackをオフシャルサイトからダウンロードします(Lapackのオフィシャルサイト).
この記事を記載した際の最新バージョンは3.6.1でした.

ダウンロードしたファイルをデスクトップに移動します.

ターミナルで,デスクトップに移動して,以下のコマンドを実行します.
$ cd desktop
$ tar zxvf lapack-3.6.1.tar

すると,解凍が始まるので,解凍が終了したら,以下のコマンドを入力して,解凍したLapackのディレクトリ(今回は,"lapack-3.6.1")に入ります.
$ cd lapack-3.6.1


続いて,INSTALLディレクトリにあるファイルを"make.inc"としてコピーします.
$ cp INSTALL/make.inc.gfortran make.inc

Makefileの11行目を,以下のように書き換えます.
    lib: blaslib lapacklib tmglib
 (元の記載は,"lib: lapacklib tmglib")

ターミナルからMakeコマンドを実行して,インストールを行います.

$ make

以下のような表示が出て,インストールは完了です.
-->   LAPACK TESTING SUMMARY  <--
Processing LAPACK Testing output found in the TESTING directory
SUMMARY             nb test run numerical error   other error  
================   =========== ================= ================  
REAL             1139269 0 (0.000%) 0 (0.000%)
DOUBLE PRECISION 1140081 0 (0.000%) 0 (0.000%)
COMPLEX          601296 21 (0.003%) 0 (0.000%)
COMPLEX16         608204 0 (0.000%) 0 (0.000%)

--> ALL PRECISIONS 3488850 21 (0.001%) 0 (0.000%)

インストールが完了すると,
・liblapack.a
・librefblas.a
・libtmglib.a
の三つのファイルが生成されるので,これらをまとめて"lib"ディレクトリを作って入れておきます(ターミナルから以下のコマンドを実行).
$ mkdir lib
$ mv liblapack.a librefblas.a libtmglib.a ./lib

これで,LAPACKに付属するBLASを用いたLAPACKのインストールは完了です(多分...).

2016年11月29日火曜日

UNIX配列とUS配列のキーバインド設定

前回, HHKB Lite2 for Mac とHHKB Lite 2 のデュアルキーボード化 + キートップの付け替えに関する記事を投稿しました.

これらは,HHKB Lite2 for MacはmacOSで, HHKB Lite 2はLinux, Windowsで使用しています.使用するOSによってキーバインドが異なるので,OSを切り替えた際に混乱してしまい,誤動作を誘発することが多いので,OSが変わっても同じ動作で,同じキーバインドが使えるようにしています.

とは言うものの,HHKBは"A"キーの隣に"Control"のあるUNIX配列なので,英語配列モデルでも,US配列のキーボードとは"Control"の位置が異なります.
なので,macOSでは,元々の"Control"キーの位置に"Command ⌘"を割り当てて,Linux, Windowsでは元々の"Control"キーに"Control"を割り当てたまま(特に変更しない)としています.こうすることで,コピー,カット,ペーストや,日本語入力と英語入力の切り替え(macOSaにおける切り替えは "⌘ + Space"としている)などの動作がどのOSでも同じになり,混乱が生じなくなりました.

設定は,HHKBのサイトからダウンロードできる専用ドライバー"HHKB Lite2 for Mac"を使って行いました(以下の画像は,設定画面).
また,US 配列のラップトップ(Mac Book Air)も使っているのですが,US配列では,以下の図のように.UNIX配列における"Control"キーの位置に,"Caps Lock"キーがあります.

私は,"Caps Lock"キーは使用しないので,"Caps Lock"キーの位置に"Control"を割り当てました.

以上のようにすることで,OS,デスクトップ,ラップトップの3種類においてキーバインドの際の動作が同じとなり,誤動作を起こすことがなくなりました.

2016年11月28日月曜日

HHKB Lite2 for Mac, HHKB Lite2 のキーの付け替え #HHKB20th

HHKB Lite2 for Mac, HHKB Lite2 を使用しはじめてからというもの,キーボードによって,入力時の気分が,だいぶん変わることを知りました.
かといって,使用しているのは,"Lite 2"なので,"Professional"や"Type-S"を使用している人達の気分はどのようなものなのだろうかと想像しながら,いつの日か,"Professional"もしくは"Type-S"を使ってみたいという気持ちになります.

以前にも,入力の際に,キーボードの前に縮こまるような体勢にはなってしまい,肩が凝るので,姿勢を良くするために,HHKB Lite2 for Macをデュアルキーボード化した記事を投稿しましたが,キーボードの掃除を兼ねて,キーを以下のように付け替えてみました.

HHKB Lite2 for Mac

HHKB Lite2

上の写真のHHKB Lite2 for Macの方は,一応,白いキーのみを入力に使用して,下の写真のHHKB Lite2 は,黒いキーのみを入力に使用しています.

これと言ってメリットがあるのかと問われると困ってしまいますが,一応,ブラインドタッチ促進仕様ということで,自己満足しています.

<2016.12.24 追記>
この記事を"HHKB20周年記念 私のこだわりキーボード投稿キャンペーン"に投稿したところ,HHKB20周年記念 オリジナルトートバックを頂きました.
これで,ますますHHKBが好きになってしまいます.

キャンペーン画像

こちらが,届いた実物

2016年11月27日日曜日

[Mac] macOS Sierraにgnuplotをインストール

macOS Sierraにgnuplotをインストールした際のメモです.

インストールはHomebrew経由で行いました.
まず最初にAquatermをインストールします.
Aquatermは,Source Forgeのサイトから,Aquatermのパッケージをダウンロードしてインストールします.
ダウンロードしたパッケージをダブルクリックするとインストールが始まります.

続いて,ターミナルから以下のコマンドを入力します.
$ brew install gnuplot --with-aquaterm

すると,以下のように,インストールが始まります.

==> Installing dependencies for gnuplot: pkg-config, libpng, freetype, fontconfig, webp, gd, lua, readline
==> Installing gnuplot dependency: pkg-config
==> Downloading https://homebrew.bintray.com/bottles/pkg-config-0.29.1_2.sierra.bottle.tar.gz
######################################################################## 100.0%
...
上記の'...'は実際に表示されるものではなく,インストールが続くことを表しています.

インストールが終了したら,以下のコマンドで無事にインストールされているかを確認してみます.

$ which gnuplot
/usr/local/bin/gnuplot

もしくは,実際に,gnuplotを起動させてみます.

$ gnuplot

G N U P L O T
Version 5.0 patchlevel 5    last modified 2016-10-02

Copyright (C) 1986-1993, 1998, 2004, 2007-2016
Thomas Williams, Colin Kelley and many others

gnuplot home:     http://www.gnuplot.info
faq, bugs, etc:   type "help FAQ"
immediate help:   type "help"  (plot window: hit 'h')

Terminal type set to 'aqua'
gnuplot> 

2016年11月26日土曜日

[Mac] macOS Sierra にgccをインストール

macOS Sierra にgccをインストールした際のメモです.
インストールはHomebrewを用いて行いました.

ターミナルから,以下コマンドを実行します.
$ brew install gcc

インストールは,意外とあっさりと終了します.

確認のために,以下のコマンドを実行すると,gfortranのインストールされている場所を教えてくれます.

$ which gfortran
/usr/local/bin/gfortran


だめ押しに,お決まりのHello World! を実行してみました.
以下のプログラムをデスクトップ"hello.f90"という名前で保存します.

program hello

  print *, 'Hello World!'

end program hello

ターミナルから,以下のコマンドを実行すると,無事,"Hello World!"と表示されました.

$ gfortran hello.f90
$ ./a.out
 Hello World!

2016年11月25日金曜日

[Mac] macOS Sierra にMacTex 2016, TeXShopをインストール

macOS Sierra にMacTex 2016, TeXShopをインストールした際のメモです.

・Homebrewで,Ghostscriptをインストール*
(この項目は,Homebrewがインストールされている前提です.なお,下記のように,MacTeXにも同梱されているので,飛ばしてもOK)
ghostscriptはMacTeXに同梱されていますが,別にインストールしておくと,後々,問題が起こる可能性が少なくなるということなので,事前にインストールしておきます.
インストールは,ターミナルで以下のコマンドを実行します.

$ brew install ghostscript

・MacTeX 2016をインストール
まず,MacTeXのページから,MacTeX.pkgをダウンロードします.

ダウンロードしたMacTeXのパッケージ(この時点のバージョンは,mactex-20161009.pkg)を開き,インストーラーを起動します.

Ghostscriptをインストール済みの場合*
[インストールの種類]で,[カスタマイズ]をクリック.
カスタムインストールの画面で,Ghostscriptのチェックを外して[インストール]をクリック.

Ghostscriptが未インストールの場合
[インストールの種類]で,[インストール]をクリック.

・TeX Liveのアップデート
インストールしたMacTeX 2016を最新の状態にアップデートしておきます.
更新は,ターミナルで以下のコマンドを実行します.

$ sudo tlmgr update --self --all
Password:
(コマンドを実行すると,パスワード入力を求められる)

"command not found"と返ってきた場合は,ターミナルを立ち上げ直して,再度入力すれば大丈夫です.
実行結果は,以下のようになります.
tlmgr: package repository ftp://ftp.kddilabs.jp/CTAN/systems/texlive/tlnet (not verified: gnupg not available)
tlmgr: saving backups to /usr/local/texlive/2016/tlpkg/backups
...
...
...
上記の"..."は,このように表示されるということではなく,ズラズラと続くという意味です.

・日本語フォントの設定
ヒラギノフォントを使うためには,ターミナルから以下のコマンドを実行します(一行ずつ実行する).

$ cd /usr/local/texlive/2016/texmf-dist/scripts/cjk-gs-integrate
$ sudo perl cjk-gs-integrate.pl --link-texmf --force
Password:
$ sudo mktexlsr
$ sudo kanji-config-updmap-sys hiragino-elcappitan-pron

GUIアプリケーションの設定

TeXShop,TeX Liveユーティリティ,LaTeXiT、BibDeskをアップデートします.

TeXShopの設定
TeXShopの環境設定の[書類]タブの左下の[設定プロファイル]から「pTeX (ptex2pdf)」を選択します.

なお,TeXのファイル更新は,ターミナルで以下のコマンドを実行することで可能です.
$ sudo tlmgr update --self --all

2016年11月24日木曜日

[Mac] macOS Sierra にHomebrewをインストール

macOS Sierra では,特にエラーも生じず,ターミナルにスクリプトを貼り付けて実行するだけでインストール可能です.(24. Sep. 2017)

事前に,Xcodeとcommand line toolsをダウンロードしておきます.
その後に,Homebrewのインストールをおこないます.
インストールは,ターミナルに以下のスクリプトを貼り付けて,実行するだけです.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

/usr/local の権限が書き換えられているという問題が報告されているようですが,以下のようにトラブルシューティングしても特に問題はなさそう.

$ brew doctor
Your system is ready to brew.

とりあえず,様子を見てみることにします.

噂によると,brew doctor を実行すると,以下のようなメッセージが出るとのことなのですが….
Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry and just ignore them. Thanks!

Warning: /usr/local is not writable. 
You should probably change the ownership and permissions of /usr/local back to your user account.

 sudo chown -R $(whoami) /usr/local

Warning: /usr/local is not writable. 
Even if this directory was writable when you installed Homebrew, other software may change permissions on this directory. For example, upgrading to OS X El Capitan has been known to do this. Some versions of the "InstantOn" component of Airfoil or running Cocktail cleanup/optimizations are known to do this as well.

You should probably change the ownership and permissions of /usr/local back to your user account.

 sudo chown -R $(whoami) /usr/local

Warning: You are using OS X 10.12. 
We do not provide support for this pre-release version. You may encounter build failures or other breakages. Warning: Your Homebrew is outdated. You haven't updated for at least 24 hours. This is a long time in brewland! To update Homebrew, run `brew update`.

2016年11月23日水曜日

[Mac] macOS SierraにCommand Line Toolsをインストール

macOS Sierraに Command Line Tools をインストールした際のメモです.
macOS SierraにCommand Line Toolsをインストールした際のメモです.
これまでのMac OS Xの場合と手順は特に変わりません.

Xcodeをインストールした後に
  MenuのXcode > Open Developer Tool > More Developer Tool
を選択します.

すると,AppleのDeveloperページに飛び,アカウント,パスワードの入力を求められるので,入力すると,以下のようなページが表示されます.
この中からCommand Line Toolsを選択すると .dmg ファイルのダウンロードが始まります.

2016年11月17日木曜日

[Windows] Windows10の日本語入力切替設定方法

Windows10の日本語入力切替は

    Alt + `

となっています.これを

    Control + Space

に変更した際のメモです.

IMEを右クリックして、【プロパティ】を選択して起動します.

詳細設定(A)をクリックして以下の画面を開きま,「編集操作」の「変更(D)」をクリックします.

以下の画面ら,キーが "Ctrl + Space" の行を探します.

 "Ctrl + Space" の行の,左から2列目(入力/変換済み文字なし)を選択して,"変更(M)" をクリックすると,以下の画面が起動します.

IME-オン/オフを選択して,"OK" をクリックします.

2016年11月13日日曜日

[Arduino] Arduinoの開発環境

Arduinoの公式ホームページを開きます.
ホームページ内の"Download"ボタンをクリックします.
"Download"ページ内の"Mac OS X 10.7 Lion or newer"をクリック(LinuxやWindowsを使用している場合は,当然そちらをクリック)します.
OSを選択すると,以下のページに移ります.とりあえず,"JUST DOWNLOAD"をクリックします.
ダウンロードした,この時点のバージョンは1.6.12-macos"というものでした.
ダウンロードしたファイルをアプリケーションフォルダにコピーして,ダブルクリックすると,以下のようなウィンドウが開き,開発環境のセッティングは完了です.

以上でIDEのインストールは完了です.

続いて,本体とMacを接続してみます.接続は,USBケーブル(ABタイプ)で行います.
USBケーブルでArduino UNOとMacを接続(繋ぐだけ)すると,Arduino UNOのLEDが点灯,点滅します(点灯するのは,Arduino UNO右側の"ON"(電源確認用 LED),点滅するのは,左側の"L"(デジタル13ピンに接続 LED)です.

この状態で先にインストールしたIDEを立ち上げます.
以下のような状態となっていれば,Arduino UNOが認識されている状態です.

    Tools >
        Port: "/dev/cu.usbmodemfd121 (Arduino/Genuino Uno) >
                /dev/cu.usbmodemfd121 (Arduino/Genuino Uno)
最初の接続では,"Tools > Port"から,"/.../... (Arduino/Genuino Uno)"と書かれている箇所を選択して,Macに接続を認識させる必要があります.

この状態で,Macの方では,接続先の機種を自動で認識している(はず)なので,
    Tools > Board: "Arduino/Genuino Uno"
となっているはずです.
もし,接続した機器が正しく認識されていない場合は,選択しておきます.

開発環境セッテイングの確認として,サンプルプログラムでの動作確認を行ってみます.
    File > Examples > 01. Basics > Blink
を選択すると,新たなウィンドウが開きます.
この新たなウィンドウ上部の矢印ボタン"→ (Upload)"をクリックすると,Arduino UNOのLEDが点滅しますが,これは処理が行われている状態なので,問題ありません(結構ピカピカと点滅するので,最初は驚くかもしれません).
サンプルがArduino UNOに書き込まれて,"L"と書かれているLEDが1秒ごとに点滅します.
また,"Blink"のウィンドウ下部には"Done uploading"と表示され,以下のような表示となります.

2016年11月1日火曜日

SACのインストール

SACをインストールした際のメモです.

まず,IRIS内の"SAC Software Request"のページからリクエストを送ります.
すると,IRISからSAC一式を添付したメールが返ってきます(この記事を作成した際は,"sac-101.6a-mac_x86_64.tar.gz"が添付されてきました).

"sac-101.6a-mac_x86_64.tar.gz"のバージョンは 101.6 です.

インストールは以下の手順です.
  • "sac-101.6a-mac_x86_64.tar.gz"を解凍したものを "/usr/local"にコピーする(旧バージョン "sac10.6f"との共存はできないようなので,古いバージョンがある場合は削除,もしくはディレクトリ名を変更する).
$ tar xvfz sac-101.6a-mac_x86_64.tar.gz -C /usr/local/ 

  • シェル環境の設定.以下の手順で,~/.bash_profile に追加する.
ターミナルからemacs経由で".bash_profile"を開く(emacsでなくてもOK)

$ sudo emacs .bash_profile
以下を".bash_profile"に追記する
if [ -f /usr/local/sac/bin/sacinit.sh ]; then
. /usr/local/sac/bin/sacinit.sh
fi
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${SACHOME}/lib
なお,emacsの終了はC-x C-cです.(Ctrlを押しながらキーを叩くことを C-(key)と記しています

試しに,以下のように起動してみます(実際には,解析するデータファイルがあるディレクトリ上で起動する).

$ sac
 SEISMIC ANALYSIS CODE [11/11/2013 (Version 101.6a)]
 Copyright 1995 Regents of the University of California

SAC> sc ls
...        ...       ... ...
...              ...       ... ...
SAC> q

起動は
$ sac
と入力します.すると,
SAC> 
というプロンプトが返ってきます.この"SAC>"というプロンプトがあるときは,SACが起動中であることを表します.
この状態で,UNIXのコマンドを実行する時は,systemcommand(sc)を用います.
SAC> sc ls
上記の例は,"ls"を実行した時の例です.
終了するには,
SAC> q
とします.


2016年10月31日月曜日

[Mac] "/usr/local" をFinderから開けるようにする

Macでは,"/usr" などのUNIXシステム領域を,Finderからは通常は見れない仕様となっています.
一方で,"/usr/local" に独自にプログラムをインストールしたり,ライブラリを呼び出す際に,Finder,Xcodeから "/usr/local" を開きたいときがあります.

頻繁に "/usr/local" を開く場合には,以下の手順で "/usr/local" をFinderのサイドバーに登録すると,FinderやXcodeから/usr/localを開くことができます.

     1.  Finderのメニューから「移動」->「フォルダに移動」を選択
     2.  移動先フォルダに「/usr」を入力


     3.  "/usr" フォルダの内容が表示されるので,"local" をサイドバーの "Favorite" にドラッグ & ドロップ


これで,通常のサイドバーから "/usr/local" を開くことができます.

2016年8月18日木曜日

Adobe Illustratorのプレビューモードとアウトラインモードの切替

Adobe Illustrator の画面表示の方法として
 ・プレビューモード:指定した色や設定通りの表示
 ・アウトラインモード:パスの形状のみの表示
の2種類のモードがあります.

各モードの切り替えは
 Mac: [Command]+[Y]キー
 Win: [Ctrl]+[Y]キー(Win)

で行います.

2016年8月13日土曜日

[Mac] "TextEdit" の既定フォーマットを標準テキストに変更

Mac OS Xの "TextEdit" の既定フォーマットはリッチテキストです.
これを,標準テキストに設定変更するには,ターミナルから以下のコマンドを入力します.

$ defaults write com.apple.TextEdit RichText -int 0


もしくは,TextEdit内の[環境設定]から変更することも可能で,一度標準テキストに設定すれば,
[Shift]+[Command]+[T]
のショートカットキー入力だけで,いつでもリッチテキストに切り替えれます.

2016年6月30日木曜日

[Mac] 不可視ファイルや不可視フォルダを表示する方法

Mac,Windows共に,重要なファイルやフォルダは,誤操作防止のため通常の操作では表示されません.
Macではターミナルを使用して設定を変更する必要があります.
また,Windowsではコントロールパネルで設定を変更することにより表示することができます.

Macにおいて,不可視ファイルや不可視フォルダを表示するには,ターミナルから以下のように入力します.

$ defaults write com.apple.finder AppleShowAllFiles -boolean true

その上で,以下のようにFinderを再起動します.

$ killall Finder

すると,Finderが再起動して,不可視ファイルや不可視フォルダが表示されます.
また,元に戻すには,以下のように入力します.

$ defaults delete com.apple.finder AppleShowAllFiles

そして,Finderを再起動すると,不可視ファイルや不可視フォルダが非表示となります.

$ killall Finder

2016年6月26日日曜日

[Windows] Windows 10にインストールしたアプリケーションメモ

Windows 10に以下のアプリケーションをインストールした.


  • Acrobat Reader DC
  • gcc
  • GIMP
  • GMT
  • gnuplot
  • Google Earth
  • Google Chrome
  • GRASS GIS
  • LibreOffice
  • Pix4Dmapper
  • QGIS
  • TeX
  • ViewWave
  • FGDV 基盤地図情報ビューア
  • 秀丸

2016年5月12日木曜日

[Mac] RをMac OS X(Yosemite)にインストール

オープンソースである"R"をMac OS X (Yosemite)にインストールした際のメモです.

CRANにアクセスし,トップページのリンクから"Download R for (Mac) OS X"を選択してクリックします.

OS Xであればpkg形式,Windowsであればexe形式のファイルがダウンロードできます.
ダウンロード後は他のソフトウェアと同じようにインストールを実行します.

pkgファイルをダブルクリックすると,以下のようにインストーラーが立ち上がります.特に設定を変更したい場合を除いて,"Continue" をクリックし続ければOKです.

Rを起動すると,以下のようなコンソール画面が立ち上がります.


R0001659
https://www.flickr.com/photos/hidehikomurao/26856812742/in/dateposted-public/

2016年4月20日水曜日

[TeX] 目次をsubsubsectionまで記載する方法

TeXで,デフォルトの設定のままだと,目次で"section"と"subsection"までしか表示されない."subsubsection"まで記載したい場合は,プリアンブルに

    \setcounter{tocdepth}{3}

と追記する.
{ }内の数字はそれぞれ

  • -1 -> part
  • 0 -> chapter
  • 1 -> section
  • 2 -> subsection
  • 3 -> subsubsection

に対応している.

  R0001658
https://www.flickr.com/photos/hidehikomurao/26677922340/in/dateposted-public/

2016年4月5日火曜日

[gnuplot] 関数のフィッテイング

gnuplotの機能の一つに,関数のフィッティングがあります.
パラメータを含んだ関数を用意すると,データファイルの数値に対して最適なパラメータの数値を自動的に探索します.
関数は,gnuplotで表現できるものなら,線形・非線形を問いません.

具体例を示します.
以下のようなデータ(圧密試験結果,data.csv)があったとします.

# Consolidation Pressure p(kN/m2),Void Ratio e
0,0.593
9.8,0.584
19.6,0.58
39.2,0.573
78.5,0.564
157,0.551
314,0.536
628,0.515
1256,0.484

このデータに関して,関数
  f(x)=c*(x-a)**b
をフィッティングして,変数a, b, cの値を求めます.

まずは,以下のようなスクリプトを実行してデータをプロットしてみます.

 set logscale x 10
 set xrange [1:10000]
 set tics font "Times New Roman,25"

 set yrange [0.35:0.65]
 set ytics 0.05
 set mytics 5
 set xlabel "{/=30 Consolidation stress p(kN/m^{2})}"
 set ylabel "{/=30 Void Ratio e}"
 set size square
 set key font "Times New Roman,25"
 set key right top

 plot "./data.csv" using 1:2 w p ps 1.5 title "Sample 1"



次に変数a,b,cの初期値を求めます.
gnuplotのフィッティングでは,初期値を与えないと全て"1"として計算を始めます.
しかし,反復回数が多くなったり,結果が得られないこともあるようなので,当たりをつけて初期値を決めた方が良いようです(以下の例では初期値を与えない場合を示します).

最初に,フィッテイングする関数を定義します.
探索するパラメータの変数名は,xやt等のgnuplotが使う特別な変数でなければ何でも大丈夫です.
関数フィッティングには,fitコマンドを使います.
オプションに,探索したいパラメータ名を via に続けて与えます.

 f(x)=c*(x-a)**b
 fit f(x) "./data.csv" using 1:2 via a,b,c

フィットを行うデータファイルに対しては,using, index, every等のオプションが使うことができ,データファイル中の任意の数値をフィッティングの対象にできます.
また,データの誤差を与える事で,各点での重みを変えることができます.
データの重みは,誤差σの2乗の逆数(σ^{-2})となります.
重み付き最小 自乗法を行うためには,データファイルの3カラム目に誤差を用意し, fit f(x) "exp.dat" using 1:2:3 via a,b のようにusing を使って誤差のカラムを指定します.誤差を与えない場合は,全データの 重みは1になります.

以下のスクリプト(test.gp)を実行すると,下図が得られます.

 set datafile separator ","

 set logscale x 10
 set xrange [1:10000]
 set tics font "Times New Roman,25"

 set yrange [0.35:0.65]
 set ytics 0.05
 set mytics 5
 set xlabel "{/=30 Consolidation stress p(kN/m^{2})}"
 set ylabel "{/=30 Void Ratio e}"
 set size square
 set key font "Times New Roman,25"
 set key right top

 plot "./Dc90-2.csv" using 1:2 w p ps 1.5 title "Sample 1"

 f(x)=c*(x-a)**b
 fit f(x) "./Dc90-2.csv" using 1:2 via a,b,c

 replot f(x), "./Dc90-2.csv" using 1:2 w yerrorbars


ちなみに,Mac OS Xのターミナルから,上記のスクリプトを実行した場合,ターミナルには以下のように表示され,イタレーションの回数(今回の例では15回)や,フィッテングされた変数の値(a, b, c )などがわかります.

gnuplot> load 'test.gp'
iter      chisq       delta/lim  lambda   a             b             c            
   0 2.0958191547e+06   0.00e+00  2.07e+03    1.000000e+00   1.000000e+00   1.000000e+00
   1 3.1401236259e+05  -5.67e+05  2.07e+02    1.000059e+00   8.652118e-01   9.785288e-01
   2 4.3661665492e+04  -6.19e+05  2.07e+01    1.000868e+00   7.302030e-01   9.158026e-01
   3 3.9742713760e+03  -9.99e+05  2.07e+00    1.008882e+00   6.584271e-01   4.525282e-01
   4 7.1730628717e+01  -5.44e+06  2.07e-01    9.923941e-01   6.351242e-01   7.812126e-02
   5 8.6890175128e+00  -7.26e+05  2.07e-02    6.980505e-01   4.985268e-01   7.998705e-02
   6 5.2167471432e-01  -1.57e+06  2.07e-03   -7.175606e+00   2.711390e-01   1.407226e-01
   7 3.0807202872e-01  -6.93e+04  2.07e-04   -2.955954e+01   2.491715e-02   3.138176e-01
   8 1.1567525775e-01  -1.66e+05  2.07e-05   -1.338551e+01  -9.192671e-02   6.734814e-01
   9 5.8730090513e-03  -1.87e+06  2.07e-06   -3.335614e+01  -4.813472e-02   7.368142e-01
  10 9.9947209776e-05  -5.78e+06  2.07e-07   -8.772884e+01  -6.842443e-02   7.982868e-01
  11 8.0106216817e-05  -2.48e+04  2.07e-08   -1.408457e+02  -8.119137e-02   8.727729e-01
  12 3.6356267939e-05  -1.20e+05  2.07e-09   -1.692429e+02  -8.667967e-02   9.118675e-01
  13 3.3880317042e-05  -7.31e+03  2.07e-10   -1.775257e+02  -8.825277e-02   9.234001e-01
  14 3.3854660121e-05  -7.58e+01  2.07e-11   -1.791170e+02  -8.857467e-02   9.256578e-01
  15 3.3854399746e-05  -7.69e-01  2.07e-12   -1.793814e+02  -8.862971e-02   9.260331e-01
iter      chisq       delta/lim  lambda   a             b             c            

After 15 iterations the fit converged.
final sum of squares of residuals : 3.38544e-05
rel. change during last iteration : -7.69104e-06

degrees of freedom    (FIT_NDF)                        : 5
rms of residuals      (FIT_STDFIT) = sqrt(WSSR/ndf)    : 0.00260209
variance of residuals (reduced chisquare) = WSSR/ndf   : 6.77088e-06

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = -179.381         +/- 47.19        (26.3%)
b               = -0.0886297       +/- 0.01025      (11.57%)
c               = 0.926033         +/- 0.06838      (7.384%)

correlation matrix of the fit parameters:
                a      b      c      
a               1.000 
b               0.968  1.000 
c              -0.979 -0.999  1.000 
gnuplot> 

R0001657
https://www.flickr.com/photos/hidehikomurao/26345690674/in/dateposted-public/

2016年2月15日月曜日

[Raspberry Pi] LEDの点滅

LEDは電流が流れると点滅します.この点では豆電球と同じですが,流れる電流の向き(極性)があることと,LEDはある程度の抵抗を挟んで電流の量を抑えないと破損する恐れがあるという点が異なります.
LEDには,下図のように,2本のリード線の長さに違いがあり,長い方をアノード,短い方をカソードとよび,電流の流れる方向は,アノードからカソードの方向になります.

LED 右側がアノードで,左側がカソード

今回の例では,LEDのアノードを,Raspberry Pi のGPIO(General Purpose I/O)14というピン(8番ピン)につなぎます.Raspberry Pi のピンヘッダーには40本のピンがありますが,下図のように,左上が1番ピン,その右が2番ピン,その左下が3番ピンという順で続きます(どの番号でも機能は同じになります).カソードにつなぐのは"GND(6番ピン)"です.


GPIO端子がスイッチの役割を果たします(LEDのオンオフ制御はRaspberry Pi で動作するプログラム).Raspberry Pi から電圧をハイ(3.3V)か,ロー(0V)に切り替えることができ,ハイであればLEDが点灯し,ローであれば消灯します.
また,GPIOはハイとローを出力する端子となるほか,入力端子にもなります.入力がハイ(3.3V)なのかロー(0V)なのかを調べて,プログラムに伝えます.GPIOは1(ハイ),もしくは0(ロー)かで動くデジタルI/Oです.

ブレッドボードを使って,下図のように配線します.
 
赤色LED: 3mm, Vf: 1.85V,抵抗: 330Ω*
この状態で,Raspberry Pi の電源を入れ,ターミナルを立ち上げ,以下のように入力していきます.

  $ sudo -s

これは,管理者(root)ユーザーを切り替えるコマンドです.コマンドプロンプトが"#"に切り替わり,管理者になります.このコマンドを実行すると,以下のように表示されます.

  root@raspberrypi:/home/pi#

続いて,今回利用するGPIO 14を有効にして,出力モードにするために,以下のように入力します(入力モードにするためには,"out"ではなく,"in"とします).

  # echo "14" > /sys/class/gpio/export
  # echo "out" > /sys/class/gpio/gpio14/direction

GPIO 14をハイ(1)にして,LEDを点灯させます.
  # echo "1" > /sys/class/gpio/gpio14/value

消灯するには,以下のように入力します.
  # echo "0" > /sys/class/gpio/gpio14/value

これを繰り返せば,LEDを点滅させることができます.

ここでは,シェルスクリプトを書いて,LEDの点滅を行ってみます."exit"コマンドで管理者モードを抜けて,ホームディレクトリに移動した上で,テキストエディタ(nano)を立ち上げます.

  # exit
  exit
  $ cd ~
  $ nano led.sh

立ち上がったテキストエディタ(nano)において,以下のように入力します.

#!/bin/sh
echo "14" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio14/direction

while true      #infinite loop
do
        echo "1" > /sys/class/gpio/gpio14/value
        sleep 0.5       #wait 0.5s
        echo "0" > /sys/class/gpio/gpio14/value
        sleep 0.5       #wait 0.5s

done

テキストエディタのnanoでは,"Control(Ctrl) + O"を押して,"Enter"キーを押すと保存されます.nanoを終了するには,"Ctrl + X"とします.
シェルスクリプトの実行は,ターミナルで,以下のように入力します.なお,GPIOなどを制御するコマンドは管理者権限(sudoコマンド)で実行する必要があります.

  $ chmod +x led.sh
  $ sudo ./led.sh

すると,以下の動画のようにLEDが点滅します.プログラムを終了(点滅を終了)させるには,"Ctrl + C"とします.

* 抵抗を330Ωとしていますが,当然抵抗の値を大きくすれば暗くなります(Raspberry Pi では330〜1kΩ程度の抵抗を挟んでおけば問題ありません).
LEDは,かける電圧を上げていくと,一定の電圧を超えた段階でそれまでに流れなかった電流が一気に流れ出すという性質を持っています.このときの電圧を「順方向電圧」といいます.先のLEDの説明の箇所に"Vf: 1.85V"とありますが,この"Vf"が順方向電圧です.電圧がこの値(1.85V)を超えた段階で大きな電流が流れるので,LEDを破壊しないようにするために,抵抗を挟む必要があります.LEDに流せる最大電流は製品によって異なります.この製品に関する説明のある秋月電気通称のサイトには,


明るさ:250mcd (200〜399mcd)(@20mA

という記載があります.これは,通常は@20mAまでに電流を抑えるようにという意味です.抵抗を330Ωとした場合の電流値を計算すると,以下のようになります.


抵抗にかかる電圧:3.3(V) - 1.85(V) = 1.45(V)
回路に流れる電流:1.45(V) / 330(Ω) = 4.4(mA)**

4.4(mA) < 20mA ですから,LEDの上限に収まっているので,LEDを壊してしまう心配は不要ということになります.
LEDのほとんどの最大電流は20mAですが,20mAの電流を流すと眩しくなりすぎます.また,Raspberry Pi では,1つのGPIO当たりに流される電流量は16mAまでとなっているので,330Ω程度以上の抵抗を挟んでおけば安全ということになります.加えて,Raspberry Pi はピンヘッダー全体で提供できる電流が最大50mA程度とされているので,多くの部品をつなぐときは注意が必要です.

** 1.4(V) / 330(Ω) = 0.00439...(A) ≒ 0.0044(A) = 4.4(mA)

R0001656
https://www.flickr.com/photos/hidehikomurao/26951323405/in/dateposted-public/