Octave语法
向量
-
分號:分割行
-
空格或逗號:分割列
創(chuàng)建與訪問
行向量
-
空格或逗號分割
列向量
-
分號分割
矩陣
-
與向量一樣,空格或逗號分割列,分號分割行
-
冒號:代表所有,所有行或所有列
創(chuàng)建
>> A = [1, 2; 3, 4] % 一行寫完 A =1 23 4>> A = [1, 2; % 分行寫 > 3, 4] A =1 23 4創(chuàng)建技巧
-
a:c --- 從a到c
-
a:b:c --- 從a,間隔b,到c
-
向量也可以用這樣的方法創(chuàng)建
特殊矩陣
單位矩陣
>> eye(3) % 單位矩陣 ans =Diagonal Matrix1 0 00 1 00 0 1>> flipud(eye(3)) ans =Permutation Matrix0 0 10 1 01 0 0轉(zhuǎn)置矩陣
A =1 23 4>> A' ans =1 32 4逆矩陣
A =1 23 4>> pinv(A) ans =-2.00000 1.000001.50000 -0.50000>> pinv(A) * A ans =1.00000 0.00000-0.00000 1.00000全1矩陣
>> ones(2, 3) ans =1 1 11 1 1全0矩陣
>> 0*ones(2, 3) ans =0 0 00 0 0 >> zeros(2, 3) ans =0 0 00 0 0隨機矩陣
>> rand(1, 3) % 0~1的隨機數(shù),1行3列 ans =0.99291 0.65946 0.95102高斯分布矩陣
>> randn(1, 3) % 高斯分布 ans =0.14646 2.02587 1.33266訪問
-
冒號:代表所有,所有行或所有列
訪問元素
A =1 2 34 5 67 8 9>> A(2, 2) % 第二行,第二列,先定行再定列 ans = 5訪問單行或單列
>> A(1, :) % 第一行,所有,元素 ans =1 2 3>> A(:, 2) % 第二列,所有,元素 ans =258訪問多行或多列
>> A(:, [1, 3]) % 第一列和第三列,所有,元素 ans =1 34 67 9>> A([1, 3], :) % 第一行和第三行,所有,元素 ans =1 2 37 8 9連接
-
C = [A B],把B按列加到A上,生成C
-
C = [A; B],把B按行加到A上,生成C
添加元素
>> A = [1] A = 1>> A = [A, 2] % 把2,按列,添加到A上,再賦給A A =1 2>> A = [A; 3] % A有兩列,3只有一列,規(guī)模不匹配 error: vertical dimensions mismatch (1x2 vs 1x1)添加行或列
>> A = [A; [3, 4]] % 將向量[3, 4],作為行,添加到A上,在賦給A A =1 23 4>> A = [A, [5; 6]] % 將向量[5, 6],作為列,添加到A上,在賦給A A =1 2 53 4 6矩陣連接
>> A = [1, 2; 3, 4] A =1 23 4>> B = [5, 6; 7 ,8] B =5 67 8>> [A; B] % 將B,作為行,添加到A上 ans =1 23 45 67 8所有的數(shù)據(jù)放入一個向量中
>> A A =1 23 4>> A(:) ans =1324>> A(:)' ans =1 3 2 4賦值
-
在訪問基礎(chǔ)上,給定相同規(guī)模的數(shù)據(jù)
運算
加,減
>> A = [1 1; 1 1] A =1 11 1>> B = [2 2; 2 2] B =2 22 2>> A + B ans =3 33 3>> A - B ans =-1 -1-1 -1>> A - 1 ans =0 00 0相乘
>> A = [1 2; 3 4] A =1 23 4>> B = [5 6; 7 8] B =5 67 8>> A * B ans =19 2243 50>> -A % -1 * A ans =-1 -2-3 -4點運算
對應(yīng)元素運算
-
維度相同:對應(yīng)元素相乘
-
行維度相同:每行對應(yīng)元素相乘
-
列維度相同:每列對應(yīng)元素相乘
-
A .* B = B .* A
-
乘 *;除 /; 平方 ^;等
維度相同
A =1 11 1B =2 32 3>> A .* B ans =2 32 3行維度相同
A =1 11 1B =5 6>> A .* B ans =5 65 6列維度相同
A =1 11 1B =56>> A .* B ans =5 56 6點除
-
矩陣乘以常數(shù),A * 2,除可以是,A / 2
-
反過來,2 * A沒問題,2 / A 就不行,要用2 ./ A
邏輯
-
每一個元素做比較,標記0或1
-
>, <, ==, !=(或~=), &&, ||
位運算
-
或 | ,函數(shù)xor
-
且 &
-
非 ~
-
異或 ^
控制語句
if
i = 1 >> if i == 1 > disp(1) > elseif i == 2 > disp(2) > else > disp(3) > endfor
>> for i = 1:3 % 從1到3 > disp(i) > end123while
>> while i <= 3 > disp(i) > i = i + 1 > end123break,continue
與C、C++、Java沒有區(qū)別
函數(shù)
-
size:獲取矩陣維度
-
length:獲取最大維度
-
who:變量列表
-
whos:變量詳情
-
clear 變量名:刪除指定變量
-
clear:刪除所有變量
-
find:返回符合條件元素的下標
-
log:log以e為底
-
exp:e的多少次方
-
abs:絕對值
-
floor:向下取整
-
ceil:向上取整
-
sum:求和
-
prop:求積
size
-
獲取矩陣維度
length
-
獲取最大維度
who
變量列表
>> who % 現(xiàn)在都有哪里變量 Variables in the current scope:A aSize ans featuresX wwhos
變量詳情
>> whos % 變量詳情 Variables in the current scope:Attr Name Size Bytes Class==== ==== ==== ===== =====A 3x2 48 doubleaSize 1x2 16 doubleans 1x20 20 charfeaturesX 27x2 432 doublew 1x10000 80000 doubleTotal is 10082 elements using 80516 bytesclear
刪除變量
>> clear featuresX >> who Variables in the current scope:A aSize ans w >> clear % 清除全部變量 >> who % 一個變量都沒有了find
-
返回符合條件元素的下標
sum
求和
>> A = [1, 2; 3, 4] A =1 23 4>> sum(A) % 等效:sum(A, 1) ans =4 6>> sum(A, 2) ans =37prod
求積
>> A A =1 23 4>> prod(A) % 等效:prod(A, 1) ans =3 8>> prod(A, 2) ans =212max
向量
>> a = [1 5 2 3.3] a =1.0000 5.0000 2.0000 3.3000>> max(a) ans = 5>> [val, ind] = max(a) val = 5 ind = 2矩陣比較
兩個矩陣比較每個元素,保留大的
>> A = rand(3) A =0.2620788 0.6346345 0.46591610.0880455 0.1258945 0.00795590.0296765 0.7917592 0.4321800>> B = rand(3) B =0.039237 0.672424 0.2146490.491320 0.362929 0.1976260.821090 0.675265 0.698960>> max(A, B) ans =0.26208 0.67242 0.465920.49132 0.36293 0.197630.82109 0.79176 0.69896行與列的最大值
參數(shù)二:與之比較的矩陣
參數(shù)三:按行還是按列
randperm
生成亂序序列
>> A = [2, 3, 4 ,5 ,6] A =2 3 4 5 6 >> rand_indices = randperm(length(A)) rand_indices =1 2 4 5 3 >> A(:, rand_indices(1:3)) ans =5 6 2自定義函數(shù)
創(chuàng)建步驟
-
創(chuàng)建存放函數(shù)的文件(文件名要與函數(shù)名相同,.m結(jié)尾)
-
創(chuàng)建函數(shù)
調(diào)用
-
進入到存放函數(shù)文件的目錄
-
添加存放函數(shù)文件的目錄,到,搜索路徑
數(shù)據(jù)
路徑
與Linux命令一樣
>> pwd % 當前路徑 ans = /Users/XXX>> cd ~/Developer>> pwd ans = /Users/XXX/Developer>> ls % 列出目錄文件和文件夾>> cd .. % 回到上級目錄載入與保存
>> load featuresX.dat % 載入數(shù)據(jù),變量名為featuresX >> data = load('ex1data1.txt'); % 變量名為data>> save featuresX.mat featuresX; % 將featuresX中的數(shù)據(jù)保存到featuresX文件中 >> save hello.txt v -ascii % 將變量v中得數(shù)據(jù)已ascii編碼方式保存到hello.txt中其他
命令
-
簡化命令行:PS1('>> ');
-
關(guān)閉圖表:close或close all
-
命令行清屏:clc
注釋
%后為注釋
打印
自動打印
a = 3 % 會打印數(shù)據(jù) a = 3; % 不會打印數(shù)據(jù),分號可以防止輸出格式化
disp(pi) % 輸出:3.1416 disp(sprintf('pi is %.2f', pi)) % c語言風格默認格式
format?long?% 修改默認打印格式幫助
help size % 查看size函數(shù)的幫助文檔 help help % 查看help函數(shù)的幫助文檔圖
plot
屬性
-
LineWidth:線寬
-
MarkerFaceColor:標記顏色
-
MarkerSize:標記大小
x,y軸
ylabel('x');
xlabel('y');
直方圖
>> w = -6 + sqrt(10)*randn(1, 10000); >> hist(w) >> hist(w, 30) % 30組 from: https://segmentfault.com/a/1190000004204177總結(jié)
- 上一篇: Octave matlab中运行.m文件
- 下一篇: matlab中有哪些有趣的命令?好玩的m