2017年10月18日 星期三

高血壓筆記

先看高血壓定義:

依據JNC8, 我們可依族群設定不同的血壓目標,主要分為兩種
1. 若病患大於60歲且無糖尿病以及慢性腎臟病 => 150/90 開始治療
2. 其餘情況 => 140/90 開始治療


成因:
1. primary (essential)
2. secondary

治療方式:
1. 生活型態調整(每項降收縮壓 5mmHg)

(1)  減重
(2)  有氧運動
(3)  飲食
(4)  限鹽
(5)  限酒

2. 藥物治療
=> 若病患有慢性腎臟病或高血壓, 使用ACEI/ARB, 再考慮加其他種藥
=> 其他病患依族群分類 => 黑人=> TZD or CCB , 再考慮加其他種藥
                                           => 其他族群 => TZD or ACEI or ARB or CCB, 再考慮加其他種藥

藥物作用機轉:

1. ACEI

(1)  抑制 RAA system內的 angiotensin-converting enzyme inhibitor
(2) 常見的有:

 captopril (也就是常聽到的capoten)

2. ARB
(1) 機轉類似ACEI, block RAA system 的 angiotensin receptor
(2) 常見的有 Losartan

p.s. 因為ACEI 和 ARB 機轉類似, 故不得合併使用
p.s. ACEI/ARB 有致畸胎性 => 孕婦禁用

3. β-Blockers:
(1) 氣喘患者絕對不可使用(切記切記,所以值班若不了解病人情況,降血壓請選別種,比較安全)
(2) 常見的有:

atenolol
Labetalol(trandate)
                               

4. CCB
(1) 阻斷 calcium chanel
(2) 常見的有

Amlodipine(Norvasc): 門診超常見用藥,也就是常聽到的脈優
Nicardipine(也就perdipine) => 臨床常用降血壓藥,洗腎病患也可用
adalat => 古早時期常用舌下服法來降血壓,後來發現容易降太快,導致病人collapse,現在多用口服了~

5. TZD
(1) 利尿劑 => 降低身體的volume, 導致血壓下降

reference:
1. JNC 8
2. The Massechusette General  Hospital Handbook of Internal Medicine
3. http://www.ktgh.com.tw

2017年10月15日 星期日

Octave/Matlab 介紹

Matlab 是一套理工科常用的數學軟體, 功能極端強大, 但缺點是需付費, 不過開源軟體社群開發出一套免費的軟體Octave,其指令可以涵蓋matlab, 非常好用, 下載地址:octave

p.s. 本文用>>取代原本開頭(ex. octave:1>) ,來方便簡化
其指令為 PS1('>> ')
指令教學:

1. 繪圖

(1)二維繪圖:
>> x=[1,2,4,6,8]
>> y=[3,4,6,7,9]
>> plot(x,y)

圖案如下:
其實還蠻漂亮的XD

2. vector:

(1) row vector:
>> v=[1 2 3]
v=
      1  2  3

(2) column vector:
>>v=[1;2;3]
v=
      1
      2
      3

3.  matrix 運算:
(1) matrix 宣告

>> A=[1 2 ; 3 4 ; 5 6]
A=
        1  2
        3  4
        5  6

(2) matrix transport
>> A'
A=
        1  2  3
        4  5  6

4. control statement:

(1) loop:
>> for i=1:5,
> v(i)=i;
> end;
> v
v=
      1  2  3  4  5

5.  其他功能

(1) 如果需要加註解, 利用%符號
>> 6+7   % 6 add 7
13

(2)  如果不知道這個指令如何使用,可以在指令前面加help
>> help help % 查詢help指令如何使用

(3) linux 的許多指令也能使用,例如pwd, ls, cd


reference:
1. https://www.gnu.org/software/octave/
2. Machine learning by andrew ng
3. mathwork
4. Octave

2017年10月7日 星期六

trie 介紹

trie 是一種樹狀的數據結構,用來儲存大量字串,每個節點由個一個字組成,先創原點,再將單字逐個加入,若遇到之前沒有的,則加入那個分枝

其主要應用領域在bioinformatics,information retrieval

trie可分為好幾種,以下由我一一道來

1. 26 way trie: 一個節點有26個分支,主要用在英文單字的儲存,圖解如下=>

假設有aaa,aab,efg三個單字,先創原點,用@表示
         
            先加入aaa                再加入aab           最後加入efg
            @                                   @                       @
           /                                       /                         / \
         a                                      a                        a     e
        /        =>                           /              =>       /       \
       a                                      a                        a         f
      /                                       / \                       / \         \
     a                                     a   b                   a   b         g

須注意每個節點需用一個變數來表示是否為終點,比如說上圖我們搜尋aa,也能找到,但是aa實際上不存在於我們的資料中;此外,每新增一個節點,其實我們需要新增26個指標,來指向NULL


來看trie的複雜度,假設有n個字串,字串長度最長為L,建立trie所需複雜度為O(n*L),insert的複雜度為O(L),search的複雜度亦為O(L),非常的快,且能支援prefix search, 意思為輸入前綴,有相同前綴的單字都會跑出來, 舉例來說,輸入pet,可能會跑出peter,petty之類的

另一種分析複雜度的方法,假設全部的字數為N,理想狀態下,若字串長度差不多,則insert,search,delete的complexity皆為O(log N),因為高度為log N

缺點: space complexity實在太大太大, 需要27*N(reference), 因此若搜尋筆數不多,可能使用其他方法更有效率

2. Ternary search tries(TST):

和上面的trie類似, 也是每個節點儲存一個字以及變數,但不同的是每個節點只有三個子節點,分別是左邊接值小(表示字串開始的值比目前節點小),值相等往下方走,右方值大(表示字串開始的值比目前節點大)

TST insert, 圖解=>

     先加入aaa                再加入dcb                       再加入ef
                                (d比a大,所以接右邊)        (e比a大,往下再比,又比d大,所以接右邊)                  
       a                                        a                        a     
       |                                 =>    |\              =>      |\      
       a                                       a d                     a d        
       |                                         |  |                      |  | \       
       a                                       a  c                     a c e       
                                                    |                         |   |
                                                    b                        b  f 

其實訣竅很簡單, 就是比大小XD,遇到值大右走,值小左走,值相等往下

有一點很值得提的,就是TST是由Robert Sedgewick和Jon L. Bentley在1990年代提出,
其中Robert Sedgewick 就是參考資料2的作者

複雜度分析,其實很明顯可以看出time complexity 比26-way多, 但是 space complexity 少非常多
分析如下,search 和 insert 都變成 O(L+logN),其中L是字串長度,N是總字數,原因很簡單,因為原本字串
長度就是L, logN代表最多能被多接幾個; 至於空間複雜度很簡單,就是4N(reference)


reference:
1. https://www.coursera.org/learn/gaoji-shuju-jiegou/lecture/1s2Nc/trie-shu
2. http://algs4.cs.princeton.edu/lectures/52Tries.pdf

2017年10月2日 星期一

win10 ubuntu 安裝於外接硬碟心得

如題,試了好久才成功,寫個紀錄以免忘記,我本身電腦是win10系統,最近想要使用ubuntu,但又怕裝ubuntu影響到原本系統,於是決定將ubuntu安裝在外接硬碟裡
需要物品:
USB隨身碟:用來做開機光碟
外接硬碟:用來做Ubuntu系統空間


首先.先下載ubuntu iso檔,下載網址: https://www.ubuntu.com/download/desktop

之後,下載unetbootin,將iso灌入usb檔,將usb製作成開機光碟

之後重新開機(win10要壓住F2),進入bios模式,選擇boot,將模式改為legacy(UEFI怎麼試都不成功@@),將USB FDD的順位拉到最前面,此時選擇儲存設定後開機

成功開機後,即可開始安裝ubuntu,在installation type那裡,記得要選something else,來進行磁碟分割,到達下一個頁面後,將bootloader安裝在隨身硬碟,並將隨身硬碟空間拆成swap area和ext4即可
(記得留下free space給bootloader),還有就是ext4必須mount,可以選擇 " / "


p.s. 如果之後拔掉隨身硬碟,想換回win10開機,記得bios模式要改回UEFI




reference:
1. https://blog.gtwang.org/linux/install-ubuntu-linux-to-usb-stick/