2015年5月27日 星期三

c++ stream 使用科學記號

[stream]<<std::scientific;

可以是cout或是任何fstream物件

這方法可以把輸出的數字全部用科學記號來輸出

雖然沒有什麼實質效用,但可以讓數據看起來美觀一點

還有其他的格式化方式可以到參考以下網站

http://en.cppreference.com/w/cpp/io/manip/fixed

https://www.bnw.com.tw/conference/viewtopic.php?f=76&t=5290

learn for awk

http://lalakiwe.myweb.hinet.net/Documents/awk/awk_4.html
從這網站上可以學習到awk的一些基礎

awk 是個相當方便的程式語言,我想我應該好好熟悉它的。

舉例來說,我有個檔案格式是兩個colum組成的,我想取第一個colum的平均值,方法如下:

awk 'BEGIN{sum=0} {sum+=$1} END{sum/=NR; print sum}' test.dat

就這樣一行就可以完結了,相當的方便。

大二的時候就聽師揚介紹過,但並沒有很常用,但今後我應該要好好熟悉它。

2015年5月25日 星期一

Convert Eigen Matrix to C-style array

We can convert C-style array to Eigen Matrix :

double C_arr[N*N]
MatrixXd EigenMatrix
EigenMatrix=Map<MatrixXd>(C_arr,N,N)

And there is the same way to covert Eigen Matrix to C-style:

Map<MatrixXd>(C_arr,N,N)=EigenMatrix

2015年5月20日 星期三

定時執行某段程式

這回被指派的工作是每八小時印出程式中的某個vector,我上網查了一些文章,學到了使用多執行緒來計時的方法,剛好現在又有重新碰了openmp,用起來還算方便。

過去我沒有分執行緒的習慣,通常都是直接在迴圈內做「if delte_time > T dosomething」這種檢查,但這會佔到主執行緒的時間,所以處理的速度總是會被拖慢,如果有一千萬個迴圈,那這個檢查就會執行一千萬次,雖然和矩陣運算相比微不足道,但總不是個好方法。

現在學習到的方法是多切一個執行緒出來,專門進行計時的工作,程式碼我放在這裡了,其中要注意的地方是「計時」的函式,不能用 ctime 的 clock() ,要使用 omp_get_wtime() 才可以,如果使用 clock() ,在主執行緒好像不會有問題,但在切割出來的副執行緒似乎就會跑太快。

vim 半透明模組 seiya.vim


我是參考這篇部落格找到這個模組的,它成功的解決了我長久以來的小問題,成功的把 vim 給半透明化了,效果相當的不錯。

seiya作者的github在此,我是透過 vundle 來安裝下來的,過程沒有出現任何問題,相當的順利,真是相當的不錯阿。

2015年5月19日 星期二

解決 vim 在 tmux 下底色問題




這件事情之前也困擾著我,今天上網查到了還算滿意的解答
根據第二篇回答,只要在 .vimrc 中加入 set t_ut= 這段即可解決
不過照理來說應該還是有辦法去修改 tmux 的設定來解決,畢竟出問題的不是vim,有種找錯仇家的感覺阿......

2015年5月18日 星期一

use vundle to install youcompleteme in vim

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

vi .vimrc

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'Valloric/YouCompleteMe'


run :BundleInstall


 cd ~/.vim/bundle/YouCompleteMe
  ./install.sh --clang-completer

 copy  
https://github.com/Valloric/ycmd/blob/master/cpp/ycm/.ycm_extra_conf.py

set .vimrc
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'