2023年9月11日 星期一

將下三角矩陣轉成完整矩陣--R

下三角矩陣轉成完整矩陣,對角線為0

只有上三角矩陣,比照辦理將upper.tri() 改成lower.tri()

原始數據 fst.csv ,是由 Arlequin或是MEGA等程式產生 Fst之類的距離矩陣,是下三角矩陣。先整理成只保留 column name,row name要先自己刪除,最後就像一般的數據框一樣

例如:

DMd,DMs,GK,HR,MD

0,,,,

0.04223,0,,,

0.00382,0.05202,0,,

0.03624,0.0194,0.02805,0,

0.30585,0.26611,0.28621,0.36128,0


>read.csv("fst.csv", header=T)->fst   #下三角矩陣

> head(fst)  #看一下

      DMd     DMs      GK      HR MD

1 0.00000      NA      NA      NA NA

2 0.04223 0.00000      NA      NA NA

3 0.00382 0.05202 0.00000      NA NA

4 0.03624 0.01940 0.02805 0.00000 NA

5 0.30585 0.26611 0.28621 0.36128  0


※如果原始數據沒有 column 或是row name,可以

colnames(fst) <-c("DMd","DMs","GK","HR","MD")


> makeSymm <- function(x) {x[upper.tri(x)]<-t(x)[upper.tri(x)] 

+ return(x) } 

#函數makeSymm。 將轉置矩陣中 定義為TRUE的數據取出 (t(fst)[upper.tri(fst)]),然後賦值給原始矩陣中定義為TRUE的位置

>upper.tri(fst)  #看一看這些指令在做什麼。還有一個參數 diag=T,可以考慮

      [,1]  [,2]  [,3]  [,4]  [,5]

[1,] FALSE  TRUE  TRUE  TRUE  TRUE

[2,] FALSE FALSE  TRUE  TRUE  TRUE

[3,] FALSE FALSE FALSE  TRUE  TRUE

[4,] FALSE FALSE FALSE FALSE  TRUE

[5,] FALSE FALSE FALSE FALSE FALSE 

> t(fst)[upper.tri(fst)]   

 [1] 0.04223 0.00382 0.05202 0.03624 0.01940 0.02805 0.30585 0.26611 0.28621

[10] 0.36128



> makeSymm(fst) ->fstM  #對fst執行函數

> fstM   #檢查一下對稱數據對不對

      DMd     DMs      GK      HR      MD

1 0.00000 0.04223 0.00382 0.03624 0.30585

2 0.04223 0.00000 0.05202 0.01940 0.26611

3 0.00382 0.05202 0.00000 0.02805 0.28621

4 0.03624 0.01940 0.02805 0.00000 0.36128

5 0.30585 0.26611 0.28621 0.36128 0.00000

或是輸出數據與原始數據相減,下三角都是 = 0,則確定至少一半無誤。

>fst-fstM

>write.csv(fstM,"fst_matrix.csv")

=================

※後續分析,例如 PCoA

>library(ape)

>pcoa(fstM)->pcoaF

>pcoaF

...局部結果

$vectors

          Axis.1        Axis.2        Axis.3

[1,] -0.06028953  1.647973e-02  0.0087032005

[2,] -0.02505095 -2.823545e-02  0.0006659622

[3,] -0.04271856  2.245764e-02 -0.0067301870

[4,] -0.11741318 -1.067173e-02 -0.0024847685

[5,]  0.24547221 -3.019853e-05 -0.0001542072


>biplot(pcoaF)

或是

> plot(pcoaF$vectors[,1],pcoaF$vectors[,2])  #自己挑選要作圖的軸

> plot(pcoaF$vectors[,1],pcoaF$vectors[,2], xlab="PCoA 1", ylab="PCoA 2", pch=16,col="red")  #修一下

> text(pcoaF$vectors[,1],pcoaF$vectors[,2],labels=names(fstM),family="Helvetica", pos=4)  #點太密時,則省略pos=4,將直接把標籤壓在點上,比較不會搞錯,再輸出到Inkscape手工微調。

===================

※後續分析: NMDS  by vegan

>library(vegan)

>metaMDS(fstM)->mds

>str(mds)    #座標是在 mds$points  (是matrix有 col.names, row.names)

>mds  #查看stress值,若>0.3:擬合不佳;<0.05:好的擬合

>plot(mds$points, pch=16)

>text(mds$points[,1],mds$points[,2], ,labels=names(fstM),family="Helvetica", cex=0.7,pos=4)

================

2023年7月15日 星期六

Canon G2010 印表機噴墨嘴堵塞處理

 Canon G2010 印表機噴墨嘴堵塞處理

這一台太久沒印文件所以堵住了,用設定的噴頭清潔無效,深度清潔無效,於是
1. 先參考這一篇學會如何正確拆下噴頭 https://www.youtube.com/watch?v=uBuGyI8PpOU
補充:
a. 第一次噴頭組沒有辦法直接拉出,要先將面對噴頭組左後方2根橫桿之間後方有一個方形白色塑膠扳上去才能拉出噴頭組。
最後完成之後也要手動扳回來,不過不扳回來也是可以用。
b. 先觀察管路中,哪些顏料有充滿到噴頭位置。

2. 再參考這一篇 搜尋字眼:"噴墨噴頭阻塞 酒精"

3. 將拆下來的噴頭放在有一點點95%酒精的淺碟子中(我用實驗室的培養皿恰恰好)
重點:
a. 95%酒精就是藥房買的藥用酒精,95%確定有用,更常見的75%沒試過不知道,不要添加任何香精...
b. 要浸泡的是成長條狀金屬色澤的噴頭,不是一點一點金屬色澤的電路接點。
c. 重要: 酒精高度以噴頭靜置時,恰好可以沾到酒精就好,不要太多而沾到另一側的電路接點。
d. 中途適度更換酒精…因為會溶出噴頭以及周圍的顏料
e. 中途適度擦拭噴頭周圍。而長條狀金屬色澤的噴頭最好不要擦拭(我是以不產生紙碎屑的拭淨紙輕輕擦,可以使用面紙代替,主要以輕壓方式吸收顏料)
f. 上述文件說2-4小時,我操作約20分鐘之後,發現以拭淨紙輕壓會有一條顏料出現,顯然噴孔是打開了,使得噴頭裡面管道中的顏料也溶出或是滲出,至於多少個噴孔打開就不知道了。在顯微鏡下我可以看到壓乾的噴頭,有液體逐漸滲到表面直到整條噴頭都溼潤了。於是就收工裝上去了。
g. 如果一開始管路中顏料有充滿到噴頭位置,則f.步驟中會擦出該顏色。 像我的只剩下黑色和青色,於是彩色噴頭最後以拭淨紙輕壓只有一條青色。
h. 我中途試著將噴頭朝上,將酒精滴上去,但是酒精會溢出往另一側的電路接點過去,於是放棄這種方法。

4. 裝上去之後,恢復管路墨水的確會花蠻長時間,耐心等待。同時墨水會注入管路中,使墨水匣水位會明顯下降。

5. 這種方法會對噴頭有多少傷害我不知道,至少能印了。

一台G2010約3300元,而1組2個噴頭要約2000元,墨水4色一組約2000元。

2023年6月4日 星期日

pdf轉jpg

不必安裝,直接在terminal執行: 

$ pdftoppm -jpeg -r 300 input.pdf output

輸出檔的附檔名會自動加上。

多頁pdf會轉出成為多個檔案,以output-1.jpg開始編號,空白頁也會轉出。

常用指令有:

-r: 解析度

圖檔格式常用的有: -jpeg, -png, -tiff

色彩格式有: -gray灰階

其他指令例如jpg壓縮比自行man pdftoppm


2023年5月26日 星期五

決定完全移除Win10

因為

1. 灌了1年沒怎麼用到的Win10竟然速度也是越來越慢,太神奇了。

2. 再一次因為Windows更新失敗/中斷/當機,造成我的2顆為了與Windows相容而格式化成NTFS的硬碟,在Ubuntu中無法讀寫,只剩唯讀,但是這一次一直無法完成Windows的更新。

3. 現在只剩下教學需求會用到SPSS (1年用半學期8次),testgen(普生出題題庫,1年用3次)

4.加上這一年微軟又來一次偷偷下載Win11,硬推Win11。上一次偷偷推Win10把我從Windows host/Ubuntu virtual 推成了雙作業系統,仍然保留Windows。

這次該徹底做個了斷了,不能繼續藕斷絲連,我決定徹底移除瘟到死。

1. 以Ubuntu的公用程式/磁碟 格式化 Windows所在的分割區,以及另一個小的Windows Reserve分割區

開機GRUB還是會出現 Windows選項,所以

2. 查詢Boot編號:

$ sudo efibootmgr


BootCurrent: 0000

Timeout: 1 seconds

BootOrder: 0004,0005,0000,0006,0001

Boot0000* ubuntu

Boot0001  Windows Boot Manager

Boot0004* Hard Drive

Boot0005* CD/DVD Drive


3. 刪除 編號為Boot0001  的 Windows Boot Manager

$ sudo efibootmgr -b 1 -B

BootCurrent: 0000

Timeout: 1 seconds

BootOrder: 0004,0005,0000,0006

Boot0000* ubuntu

Boot0004* Hard Drive

Boot0005* CD/DVD Drive

確認一下

$ sudo ls /boot/efi/EFI

Boot  ubuntu


4. 移除EFI分割區裡面殘餘的Windows資料夾,以免GRUB自己又抓到Windows,自動加回來

$ sudo rm -r /boot/efi/EFI/Windows


5. 修改GRUB

$ sudo gedit /etc/default/grub

GRUB等待時間設為0秒,因為只剩UBUNTU,沒必要浪費時間:

GRUB_TIMEOUT=0

其實不管設定幾秒,我的Ubuntu 20.04會自動跳過GRUB。


6. 更新GRUB

$ sudo update-grub


完成。

-----------------

終於將丹田中殘餘的火寒毒全數逼出到剩下最後一絲,以後不再上火心寒了。

最後一絲??

看著丹田中空蕩蕩的原來Windows所在的分割區90多G,暫時還不想把他們煉化到Ubuntu的root,怕系統崩潰或是要重灌,再找機會吧,還有很多正事要做。


資料硬碟又突然變成唯讀

這是第二次因為windows更新失敗/中斷/當機,造成我的2顆為了與Windows相容而格式化成NTFS的硬碟,在Ubuntu中無法讀寫,只剩唯讀。


例如:~$ mount -v

會顯示某些分割區是唯讀(ro: read-only) ,例如

/dev/sdc1   ..... (ro, ....)


使用如下指令重新掛載

~$ sudo mount -o remount,rw /dev/sdc1

也只是顯示讀寫(rw: read-write)  .....(rw, .....),但是檔案編輯仍然是唯讀。


推測是因為格式化成NTFS的關係。

上一次2018年依照網路建議,回頭把Windows更新完畢,就好了。

[ Ubuntu系統和檔案都突然變成唯讀]


這一次一直無法更新,加上這一年微軟又來一次偷偷下載Win11,硬推Win11,我決定徹底移除瘟到死。現在只剩下教學需求會用到SPSS (1年用半學期8次),testgen(普生出題題庫,1年用3次),該徹底做個了斷了。


NTFS解決方法


確認已經安裝ntfs-3g

1. 嘗試使用ntfs-3g或mount指令掛載硬碟:


~$ sudo ntfs-3g /dev/sdc1  /media/DATA-1T

顯示如下:

The disk contains an unclean file system (0, 0).

Metadata kept in Windows cache, refused to mount.

Falling back to read-only mount because the NTFS partition is in an

unsafe state. Please resume and shutdown Windows fully (no hibernation

or fast restarting.)

Could not mount read-write, trying read-only

ntfs-3g-mount: failed to access mountpoint /media/linghu/DATA-1T: 沒有此一檔案或目錄


明顯就是windows更新中斷在做怪


2. 記得先unmount 該分割區或是磁碟


$ umount /dev/sdc1


3. 使用ntfs-3g修復


~$ sudo ntfsfix /dev/sdc1


結果忘了儲存,大致意思就是 發現有 (還記得的關鍵字)"unclean file system", "attempt to fix....",接下來都是 "...OK"  "....successfullly",就可以了


4. 重新掛載硬碟

~$ sudo ntfs-3g /dev/sdc1  /media/DATA-1T


5.不過開機自動掛載硬碟似乎不知道在某一次嘗試中刪除了,所以要加回來:

先檢查磁碟分割槽的UUID

~$ sudo blkid


~$ sudo gedit  /etc/fstab

果然不見了。在最下方加入

UUID=[特定分割區的UUID]  /media/DATA-1T ntfs defaults 0 1

簡單說依序是: UUID碼 , 掛載點 , 格式, 掛載引數(一般為defaults ), 磁碟檢查(預設為0),  磁碟檢查(預設為0,不需要檢查)


---完成---


參考: 

https://blog.xuite.net/m740138.m740138/blog/32052683

https://www.796t.com/article.php?id=88776


2022年12月1日 星期四

呼麥簡單上口(3/3)

 三、低音呼麥

1. 最重要的是發出氣泡音。

網上很多影片在說明什麼是氣泡音,自行youtube。簡單說就是模仿人快死掉的時候發出的顆粒聲音 ㄜ.ㄜ.ㄜ.ㄜ.ㄜ.ㄜ.

教氣泡音的影片可以看但是不要照著練,有些太傷喉嚨又難練。像是有利用聲音氣流振動舌頭(懸雍垂)以產生振動顆粒聲,跟著試一下子就喉嚨喝鹽酸感了,於是底下留言也都說呼麥真是深奧難學,喉嚨都沙啞了。

最簡單的方式有2種:

a. 哨音呼麥一直練一直練,初學者哨音出現之後又練個幾天之後,每次練超過10分鐘哨音呼麥之後,氣泡音自然會出現。也許是需要肌肉記憶。

b. 暖身用的吐舌發音練習比較快。盡量伸出舌頭張大嘴,做ㄚ發音練習,大聲ㄚ個幾分鐘不同音高,氣泡音自然就出現了。如果聲音不穩定,再多練一下就可以。

我是先發現a現象,再找到b練法以快速產生低音呼麥。youtube上也有聲樂教室在教吐舌發音來放鬆,也是同樣的道理。例如這一個教"放鬆舌根"(很重要): https://www.youtube.com/watch?v=I836f1V_HWc

小插曲1:我沒學過唱歌,唱來五音不全。吐舌發音練習其實是在看吳宗憲的綜藝節目時,有2個年輕人說他們去蒙古時老師教他們吐舌發音練習,後面主持人也沒讓他們多說。當時我只是想誰跑去蒙古學唱流行歌?有貓膩!於是就自己吐舌頭練一下,氣泡音立馬出現! 所以說,當你準備好(要認真)的時候,老師自然會出現(你才看得見)。

小插曲2:youtube上聲樂教室在教吐舌發音有一個重點,用舌尖伸出舌頭向下巴方向走,不要用舌根推,會僵硬的向前伸。 就像宗岳門太極拳的指尖領一樣,簡單自然,用腳根推就會僵硬。

小插曲3:學會氣泡音,台語歌裡面的哽咽哭腔,應該會更好唱。

2. 接下來是以氣泡音練習幾個母音發音,加上音程練習,使得不同歌詞都可以維持氣泡音。

音高太高維持不住氣泡音的話可以稍微把舌頭上翹,發音可以再高一點點。但是會口齒不清,目前我無解。

發音振動位置大約在喉結之下到心窩之上之間的胸腔。

小插曲4:學會氣泡音的低音呼麥,念一段佛經或是一段話,你會覺得你很像西藏得道高僧。例如這一段 

Gyuto Monks Tantric Choir - Chakrasamvara   https://www.youtube.com/watch?v=dFkSVLCRzvk

本段金句: "總之,整個呼麥過程沒有任何一個聲音會傷到喉嚨。" 

    我一個人出差開車時就一路練習,2-3個小時,除了口渴以外不會發生沙啞等等的不舒服(除非自己在亂嘗試一些發音),頂多就是講話聲音變更低沉更像金馬獎播報員,只是像而已(10:58開始德仔的說話,提到胸腔共鳴  https://www.youtube.com/watch?v=8Ohnl1_Pd-A)。

===============================================

其他零零碎碎的補充或是再提醒:

1. 剩下的呼吸方式等等,都跟學管樂器一樣,為的是維持住音高,以及拉長時間。 請自行參考管樂器教學影片。但是還是有小差別,簡言之,不拘胸式呼吸或是腹式呼吸都可以,發聲時腹部還是"偏向"往外的,別太用力外撐,會脫肛!

2. 其他以腹部做吟音,也都跟吹管一樣。

3. 哨音呼麥聲音可以拉比較長,有點類似吹嗩吶時因為過度省氣,反而會缺氧,哨音呼麥雖然沒這麼嚴重,但是避免把氣用盡或是過度腹部用力努氣,輕鬆就好,有要上台比賽音量嗎?

4. 會這三種呼麥之後,模仿羊叫聲、馬叫聲、青蛙叫聲、蟾蜍叫聲、機車聲音、機房高頻噪音都會很像,大概是我這個生態人的附加樂趣吧! 例如就像: 03:24開始  https://www.youtube.com/watch?v=wxbcixaG5U0

5. 個人"感覺"吃完飯之後,尤其是有一點油脂的滷肉飯之類,喝一碗湯,似乎喉嚨比較乾淨,不會有老痰卡著,哨音會比較清澈空靈,更像貼蘆葦膜的竹笛聲,或是像蒙古族說的,呼麥是模仿天地自然的聲音,就像風吹過山壁石縫的哨聲。

6. 整個呼麥過程沒有任何一個聲音會傷到喉嚨,因為振動最多的不是平常說話時候的那一區聲帶。

7. 可以下載個手機app Spectroid 或是 PC程式 Friture,就可以像 Anna-Maria Hefele一樣看自己的呼麥聲音頻譜變化,蠻有趣的。

===========================

三種呼麥的學習過程就如上面整理,我把我嘗試過的方法中最快、最輕鬆的練習方法或是小撇步,都列出了。

我自己摸索,只靠網路資訊,每天開車時玩一下,每天總共約15分鐘,玩了2-3個月才發出第一個哨音。我相信上面的經驗應該可以加快到一星期,如果能親自示範應該更快就能發出哨音。至少我覺得這三種呼麥比我當年吹笛子學彈花舌容易。

至於練出所有音階等等的與音樂有關的事情,那就慢慢玩吧!我練呼麥除了好奇之外,為的是其他目的。

(我仍然相信文字的力量。)




2022年11月30日 星期三

呼麥簡單上口(2/3)

 二、 哨音呼麥

1. 發中音呼麥時將舌尖"輕輕"接觸上顎牙齦內側,不要碰觸到牙齒的位置,也不需要內縮到上顎,大致還是在突出來的牙齦上。

"輕輕"接觸是要讓初學者感覺到舌頭在受到泛音的振動,麻麻的,壓緊也可以出泛音,但是初學者就是容易肌肉緊張疲勞。

舌尖位置與口腔形狀類似ㄩ,但是舌尖是向上抵住的,於是也形成像是ㄖ音的舌形,但是舌頭的兩側其實是稍微上捲的,稍微碰到大約上犬齒的位置。 

由這樣的舌形,會在口腔中製造出一個空間。

我習慣由"矮額"的ㄜ過渡到ㄩ再過去ㄖ,這是我第一次找出哨音的方式,也許是適合會講台語和國語的人的方式。

尤其是ㄩ,因為很多語言裡面是沒有的,台語也沒有,很多外國人都會用ㄨ音來變化(請見WTO姐妹會),但就是怪怪的,國外有一支教呼麥的影片,還要從發出ㄩ音開始教。

ㄖ其實也是,音標雖然標成ri,但是跟r音不一樣,也不是捲成ㄦ音就好。

其實就算不練呼麥,你在發ㄖ的音時,把它拉長,音高提高,仔細聽,有一個喉嚨聲帶音之外的聲音,就是其中一到多個比較大聲的泛音。所以其實應該也可以試試這樣子:先發出ㄖ音,音高拉高一點,舌尖內捲到下面碰到上顎都可以(只是講話時不會碰到),仰頭壓制聲帶,調整舌頭形狀來放大泛音。

(國語中的ㄩ和ㄖ大概是匈奴人等北方民族帶進來的吧?亂猜的!)

總之,會呼麥之後,什麼音都可以帶動發出哨音來,但是不會的時候可以試試上述的順序。

2. 然後將下顎前推,像戽斗一樣。原本ㄩ就已經有一點前推下顎(其實聲帶也上提了一點點), 下顎刻意前推製造出泛音的空腔,就像笛子的管柱或是壎的空腹。外推程度也會影響音色。外推我覺得不會超過上下門牙正相對的位置,到這位置就已經不舒服了,再多就要落下頦了。

這一個影片一開始的哨音呼麥將下顎前推展現得淋漓盡致 https://www.youtube.com/watch?v=qx8hrhBZJ98&list=RDQMAteqqR9MztA&start_radio=1

3. 剩下最後一步只能說要自己找位置,找到自己的口舌結構的容易發出泛音的甜蜜點。通常的方法有

a. 換不同的基礎音音高。我的第一個泛音發出時的音高雖然忘了,但是是高音的位置,平常唱歌都吃力的音高,其實是因為抬頭的關係,大概是這樣發音位置才肯上去,聲音才夠扁吧。

b. 下顎前推可以多一點,都會幫忙拉高發音位置。

c. 抬頭幫忙拉高發音位置,壓抑原本的聲帶位置。

d. 試著擴大舌根的空間,就像小時候模仿帕華洛帝唱歌一般,又像是嘔吐時作嘔的喉嚨。其實也都是幫忙拉高發音位置。

4. 發出第一個音來之後,穩定它,隨叫隨到之後,以下可以無順序嘗試

a. 改變不同基礎音,最好照著鋼琴標準音來唱。如果跟我一樣是音癡,也只是玩玩,就隨意吧!

    本日金句: 音癡也可以練出呼麥,但也就只是練出聲音來而已。

b. 加大音量。一開始哨音很小,喉音很大聲,可以先在密閉小空間練習,我都是在開車時練,也不會吵到人,或是被當作怪咖。哨音會被前擋風玻璃反射回來聲音聽得更清楚更大聲,更容易幫助抓到加大音量的口、舌位置。 刻意壓抑基礎音的音量,也可以使哨音更清楚。腹部用力,音量也會加大,雖然只是加快氣體流量而已,找對口舌位置才是第一要義。

c. 改變舌顎空腔大小,從而改變泛音音高。可以透過改變舌頭位置形狀。

d. 改變嘴唇形狀與大小,因此改變音色,由低悶到清亮。

e. 長音打節拍。透過振動舌頭、嘴唇、喉頭使聲音產生頓點。到這裡已經可以在流行歌裡面作伴奏了,或是模擬出一段像蒙古歌的節奏了。

f. 透過手機錄音,可以收到比較多的哨音。


小結: 

(1) 哨音呼麥只是把我們聲音裡面本來就有的某個泛音加強,同時抑制基礎音以及其他泛音的方式。見 Anna-Maria Hefele的影片中的聲頻圖譜  https://www.youtube.com/watch?v=UHTF1-IhuC0。

(2) 到這裡都還是泛音唱法而已,一直練會自然變成呼麥音色,但是太花時間。先跳過5. 去練習下面的低音呼麥再回來。


5. 已經會低音呼麥之後把他加進來泛音唱法,這才是蒙古呼麥。

蒙古呼麥有一個粗糙顆粒感,雖然在高音時顆粒感不明顯,那是因為振動頻率太高造成的。

先由低音呼麥開始發音,過渡到哨音,但是去掉低音的發音只留下氣泡音的顆粒就好。

如果低音的發音也留下就會形成第四種呼麥,低音+哨音。這只是變形與組合,到這種程度自己玩一玩就會了,當然要到精通到能演出路還很長。

如果哨音呼麥時閉住嘴巴,會變成鼻腔呼麥,我覺得像蚊子叫聲,整個腦漿像在做超音波震盪(就是洗眼鏡的那玩意兒),不喜歡,大概玩錯了。