# [筆記] Octave 基礎 ### 運算語法 * `+` : 加 * `-` : 減 * `*` : 乘 * `/` : 除 * `^` : 次方 ### 邏輯語法 * `==` * `~=` : 不等於 * `&&` * `||` * `xor()` ### 矩陣創建 * `A = [1 2; 3 4; 5 6]` : 創建矩陣 * `v = n:i:m` : 生成 n 到 m,間隔 i 的矩陣 * `v = n:m` : 生成 n 到 m,間隔 1 的矩陣 * `ones(n, m)` : 生成都是 1 的矩陣,n rows,m columns * `zeros(n, m)` : 生成都是 0 的矩陣,n rows,m columns * `rand(n, m)` : 生成 0 到 1 內隨機數字的矩陣,n rows,m columns * `randn(n, m)` : 生成常態分配的矩陣,n rows,m columns * `hist(變數, n)` : 生成 n 個數據的直方圖 * `eye(n)` : 生成 n*n 的單位矩陣 * `magic(n)` : 生成 n*n 矩陣,內涵元素為 1 ~ n * n,每行每列斜對角總和相同 ### 矩陣操作 #### 查看 * `disp(A)` : 將 A 矩陣打印出來 * `A(n, m)` : 查看 n row,m column 的值,`:` 代表全部 * `A([n m], :)` : 查看 n row 和 m row 所有的值 * `size(A, n)` : 查看 A 是幾乘幾的矩陣,n 可以不輸入,1 為查看 row,2 為查看 column * `length(A)` : 查看 A 的最大維度 * `who` : 查看當前所有的矩陣 * `whos` : 詳細查看當前所有的矩陣 * `max(A)` : 查看 A 向量的最大值與索引位置,若 A 為矩陣查看 A 矩陣內每個 column 的最大值 * `max(A, [], n)` : 查看 A 矩陣內的最大值,n = 1 為查看 column,2 為查看 row * `min(A)` : 查看 A 向量的最小值與索引位置,若 A 為矩陣查看 A 矩陣內每個 column 的最小值 * `min(A, [], n)` : 查看 A 矩陣內的最小值,n = 1 為查看 column,2 為查看 row * `find(A < n)` : 查看元素小於 n 的位置 #### 修改 * `A = [A, [i; j; k]]` : 給 A 矩陣新增一行 column,值為 i、j、k * `A(:)` : 將 A 矩陣的所有元素排成一行向量 * `V = [A B]` : 將 A、B 矩陣左右合併 * `V = [A; B]` : 將 A、B 矩陣上下合併 * `V = A(n:m)` : 將 A 矩陣 n ~ m 筆資料放進 V * `clear A` : 刪除 A 矩陣,單個 clear 是刪除所有矩陣 #### 載入存入 * `load <檔名>.<副檔名>` : 載入檔案 * `save <檔名>.mat A` : 將 A 矩陣存入檔案 * `save <檔名>.txt A -ascii` : 將 A 矩陣存入檔案,存成 text ### 矩陣運算 * `A * B` : A、B 矩陣相乘 * `A .* B` : A、B 矩陣純量相乘 * `A .^ n` : A 矩陣的 n 次方 * `n ./ A` : n 常數與 A 矩陣純量相除 * `log(A)` : 對 A 矩陣取 log * `exp(A)` : 對 A 矩陣取 exp * `abs(A)` : 對 A 矩陣取絕對值 * `A'` : A 矩陣的轉置矩陣 * `A < 3` : true 回傳 1,false 回傳 0 * `sum(a)` : a 向量的總和 * `sum(A, n)` : A 矩陣的總和,1 為 column,2 為 row * `prod(a)` : a 向量的總積 * `floor(A)` : A 矩陣取地板函數,捨去正小數至最近整數 * `ceil(A)` : A 矩陣取天花板函數,加入正小數至最近整數 * `pinv(A)` : A 矩陣的反矩陣 ### 繪製 * `plot(n, m, 'r')` : 繪圖,n 為 x 軸,m 為 y 軸,'r' 為顏色,可以不加 * `hold on` : 讓已生成的圖像保持顯示,可以持續在上繪圖 * `xlable('<x 軸名稱>')` : 給 x 軸命名 * `ylable('<y 軸名稱>')` : 給 y 軸命名 * `legend('<第一個圖>', '<第二個圖>')` : 給每個繪圖命名 * `title('<標題>')` : 給此圖命名 * `print -dpng '<檔名>.png'` : 儲存此圖為圖檔 * `close` : 關掉顯示中的繪圖 * `figure(n); plot(n, m);` : 生成繪圖於編號 n 圖像,可以同時顯示多張圖像 * `subplot(n, m, i)` : 生成 n * m 格子的圖像,目前使用第 i 個格子 * `axis([n, m, i, j])` : 修改 x 軸 ( n ~ m )、y 軸 ( i ~ j ) 範圍 * `clf` : 清空圖像上的繪圖 * `imagesc(A)` : 將 A 矩陣可視化 * `colorbar` : 顯示代表數值的顏色表 * `colormap gray` : 將顏色表改為灰階 ### 控制語法 #### for ```Octave= for i = 1:10, %1 到 10 <待執行程式碼>; end; ``` #### while ```Octave= i = 1; while <條件>, <待執行程式碼>; i = i + 1; end; ``` #### if ```Octave= if <條件>, <待執行程式碼>; elseif <條件>, <待執行程式碼>; else <待執行程式碼>; end; ``` ### 函式 ```Octave= function y = squareThisNumber(x) y = x^2 ``` * 將此文件存為 `.m` 檔 * `addpath('<檔案位址>')` : 這樣 Octave 就能找到此函式 ```Octave= function [y1, y2] = squareThisNumber(x) y1 = x^2 y2 = x^3 ``` * 函式可返回多個值 ### 其他 * `PS1('>> ');` : 可以簡化命令前字符 * 賦予值時加上 `;` : 可以不將賦予後的結果打印出來 * `help` : 幫助 * `pwd` : Octave 當前路徑 * 可用 `,` 連接多條命令 * `exit`、`quit` : 關閉 Octave ###### tags: `筆記` `程式語言` `機器學習` `Octave`