2020年6月1日 星期一

multivariate Gaussian distribution


一維的高斯分佈(或常態分佈) $X \sim N(\mu,\sigma^2 )$

PDF:  p(x)


二維的高斯分佈 $ N\sim(\mu,\sum ) $
PDF:  p(x,y)



 
MultivariateNormal.png


Many sample points from a multivariate normal distribution with  and , shown along with the 3-sigma ellipse, the two marginal distributions, and the two 1-d histograms.

μ ∈ Rk — location
Σ ∈ Rk × k — covariance 







References:
  1. WiKi-Multivariate normal distribution
    https://en.wikipedia.org/wiki/Multivariate_normal_distribution
  2. 吳恩達-機器學習(9)-異常檢測、協同過濾https://www.itread01.com/content/1545204306.html
  3. Andrew Ng
    https://www.coursera.org/learn/machine-learning?action=enroll#syllabus
  4. Python for Covvriance
    https://hadrienj.github.io/posts/Preprocessing-for-deep-learning/

2020年5月24日 星期日

[APCS]C 字串的問題

C 字串的問題

char *number1[3] = {"asdf", "qwer", "zxcv"};
printf("%s", number1[0]);

這樣會印出asdf,不過我不理解為甚麼printf後面放的是number1[0]而非*number1[0]?

我的理解是number1[0]存放的應該是一個記憶體位置,而*number1[0]才是指向asdf的實際位置,不曉得對不對?

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

說明如下:

char *number1[3] = {"asdf", "qwer", "zxcv"};


number1是字元指標陣列.. 所以初指值指向3個字串位址
number1[0] --> "asdf"
number1[1] --> "qwer"
number1[2] --> "zxcv"


變數名稱  變數記憶體位址    內容(假設) 
number1[0]  &number1[0]         0x7ff0
number1[1]  &number1[1]         0x7ff6
number1[2]  &number1[2]         0x7fff


記憶體位址       內容
                        0    1     2      3    4
0x7ff0             'a'   's'    'd'    'f'   '\0'
0x7ff6             'q'   'w'   'e'    'r'   '\0'
0x7fff              'z'   'x'   'c'    'v'   '\0'


(1) *number1[0] ==>'a'
(2) *(number1[0]+1) ==>'s'
(3) number[0] 的型態是 char * ,內容是0x7ff0
(4) number[0][0] 的型態是 char,內容是'a'


printf 的%s 輸出字串, 必須提供字串位址

printf("%s\n","asdf") ==> asdf
printf("%s\n",number1[0] ) ==> asdf
printf("%c\n",number1[0][0]) ==> a
printf("%c\n",number1[0][1]) ==> s
printf("%c\n",*number1[0] ) ==> a
printf("%c\n",*(number1[0]+1) ) ==> s

Notepad++ 縮排改成4個Space




用 Notepad++ 開 Python程式預設縮排是是用 Tab,若要改成以4個 SPACE 空白縮排,可以從Settings -> Preferences 進行修改









[APCS] 2種函數參數傳遞方式



根據課程的第二階段的1-2 多項式-2的06:47的例子
我自己試寫,如下列圖檔
為什麼這樣會錯誤?




另外,影片中我有疑問:
1.程式中沒有m,那為什麼「*m」可以指向「math」?
2.我不懂為什麼影片中的程式碼polynomial(float x, float *m, int size)
*m要加*,但size卻不用加*。不都是從別的地方取來的?

2種函數參數傳遞方式, 函數內想要使用別人的陣列時, 只要傳遞陣列起始位址就可引參考引用. 而不必copy所有內容 (很花時間.)
size 只是傳給一個數字, 因為也沒有要在函數內修改傳進來的size變數, 所以可以傳值過去 (只有4個byte). 不過要傳size位址
也是可以的
將函數定義改成 int f(int x, int *math, int *size)
在主程式改成 f(x,math,&size) 來呼叫


2020年4月30日 星期四

Pi2+V2.0 子卡測試程式說明


原Pi image 已啓動SSH,  因此只要知道Pi 的IP位址, 即可連入. (Pi 要接上和PC同一個網段或者直接對接。若是對接,Windows 會自動分配一個169.254.x.x的IP給Pi)

由於開機時可先將LCM 16x2x2 接上, 如影片所示,可以看到程式將PI的位址輸出在LCM上了 (可能要調整LCM背光模組才能看到顯示的文字)



此處顯示的PI的IP位址為 169.254.238.238


(1) 使用SSH連入可以用 MobaXterm或 Putty登入Pi


登入帳號: pi
登入密碼: raspberry

(2) 啓動 Jupyter Notebook

cd bin

./run_ipython_ntoebook.sh





接著開啓chome 瀏覽器,輸入網址連到Rasbperry Pi 的Jupyter Notebook

http://169.254.238.238:8888/




開啓 sample_code/GPIO_I2C_SPI/RPi-GPIO.ipynb , 並執行它. 執行底下
GPIO LED cell 後, 可以看到LED亮啓










Note: 檔案傳輸可以用WinSCP

2020年4月25日 星期六

Spyder編輯器偏好設定與除錯模式


1.) Spyder編輯器中更改程式縮排為Tab
當用Spyder 來開發Python 程式時, 預設縮排 (indentation)是用4個SPACE, 若要改為TAB鍵可以在此修改

Tools -> Preference -> Editor -> Advanced settings -> Indentation characters




2.) Spyder編輯器中更改背景顏色

3.)   Spyder Console 調整字體大小



4.)   Variable Explorer 

View->Panes-> Variable explorer





程式一旦執行, 在 Variable explorer 視窗, 只能看到global 變數, 無法看到函式內的變數, 一個簡單的方法就是 return 變數出來, 然後就能直接檢檢視或者使用 [Debug]模式

def main():
    a = 2
    b = 4
    c = a+b

    return a, b, c

a, b, c = main()
4.)   使用 [Debug]模式
想要看到函式內的變數,可以使用[Debug]模式執行程式, 進入函數 Variable explorer 視窗會自動出現區域變數, 一旦離開函數則區域變也會消失於Variable explorer視窗。 
設定中斷點, 可以滑鼠直接點程式碼旁邊的行號, Debug Run (Ctrl+F5) 時就會停在那一行(還沒執行該行). 接下來可以一直Step (Ctrl+F10)  一行行逐步執行, 若也想要trace到函數細節, 則可以 Step Into (Ctrl+F11)






2020年4月15日 星期三

題庫參考


1.) iPAS 物聯網初級
     https://ppt.cc/fn6jIx
       (請複製上述網址並貼入網址列搜尋)

2.) 中山大學資訊管理學系碩士班 計算機概論

2020年3月31日 星期二

[Notepad++] 找到某段字並全部刪除




主要是利用搜尋 "Search Mode"的 Regular Expression 的功能,

比方我想將下列文字檔, 每一行都有 "(別名: XXXXX " 的文字, 想要刪除, 

可以在輸入以下內容

Find what :   [(別名].*

Replace with:        (這裡包留空白,不要填)

  [你想要找到的字]
.* 接下來的字

 [(別名].*  ==> 所以表示是你想要找到 以 (別名 為開頭的任何字串..., 然後換成空的





有些時候你想要刪除所有的程式註解..例如

# 這一行是註解

Find what :   [^#].*

可以先找到以 # 為行首的註解 , 將它換成空白行 ,之後再利用notepad++ 的 "Edit-> Line Operation--> Remove Empty Lines" 去刪除空白行, 就大空告成.




2020年3月18日 星期三

Code:blocks 編譯多個檔案



在專案愈來愈大時,就不會再把所有功能寫在一個檔案裡,會將不同功能寫在不同檔案中,因此當要同時編譯多個檔案時,就是要先去建立專案,然後將多個原始檔加入到專案中, 然後再build 專案。

底下以Code:blocks 建立專案為例


1. 建立新專案 File-> New-> Project




2. 選擇Console application



3.選擇C


4. 建立專案名稱及專案存放位置




5. 在專案管理視窗(Shfit-F2) 替專案新增原始檔案, 原始檔案(.c. h)可以先複製到專案資料匣下





6. 專案加入

2020年2月22日 星期六

[進階C程式設計] 如何設計一個表格

[進階C程式設計] 如何設計一個表格


資料結構的設計
typedef struct _table{
  int row;
  int column;
  int **data;

}Table;

typedef  Table * pTable;

//產生表格決定欄列大小
pTable create_table(int row,int column);

//刪除表格 release memory
void delete_table(pTable ptbl);
//卬出表格內容
void dump_2d(int row,int column, int **a );




相關文章





工商廣告: #APCS程式設計營隊 課程特色 : 工程師級的師資、精編的APCS講義、豐富的程式演練、優質的電腦教室、詳細的考古題解說 #開課時間 : 2020年 暑假開課 #上課教室: 台北: 艾鍗學院電腦教室(台北市重慶南路1段) 台中:逄甲大學電腦教室 高雄:中山大學電腦教室 更多資訊:http://bit.ly/34wHMwg

2020年2月18日 星期二

code:blocks的Function List (Symbols browser)



使用code:blocks 也有和 notepad++樣的 Function List , 開啓了這個功能才可以很
方便的快速移動到不同的函式去.


Settings -> Editor -> Code Completion -> Symbols browser

Check 'Display as free floating / docking window'