這里就不介紹octave是什么了,如果你真心想學(xué)習(xí)ML的話,octave是一個(gè)可以幫助你進(jìn)行計(jì)算的強(qiáng)大工具

符號(hào)
% 注釋
~= 不等于
; (注意半角) 結(jié)束符號(hào),命令行中可以不print出來(lái)
>, < , =值得一提的是這些符號(hào)可以應(yīng)用到矩陣中,可以將矩陣中的每一個(gè)元素和符號(hào)后的數(shù)字進(jìn)行比較,最終判斷成立返回1, 判斷錯(cuò)誤返回0,比如這樣

PS1(">> ") 可以把命令行的開始符號(hào)變成>>
命令
sprintf("%0.2f", a) 類似c語(yǔ)言中的輸出
disp() 顯示字符串
矩陣
v = 1:0.1:2 1是開始,0.1是步長(zhǎng),2是結(jié)束,包括1.0,所以有11個(gè)數(shù)
矩陣初始化
a = [1 2 3; 4 5 6; 7 8 9]

注意一下,;代表的是換行,每一行中可以拿,隔開也可以不用,直接空開就可以。
特殊矩陣初始化
以下矩陣創(chuàng)建中第一個(gè)參數(shù)都是行,第二個(gè)都是列





這個(gè)矩陣特別有意思,以第一行第一個(gè)為例,sum(第一行) = sum(第一列) = sum(第一個(gè)元素所在對(duì)角線)

矩陣索引
a(1,1)
>> 1
a(1,2)
>> 2
這里需要用圓括號(hào)擴(kuò)起來(lái),第一個(gè)數(shù)字是行,第二個(gè)是列,octave中是從1開始數(shù)數(shù)的而不是0
矩陣變化
繼續(xù)拿上面的a為例吧

重新賦值

參數(shù)意義還是不變的,第一個(gè)代表行,第二個(gè)代表列,:表示的是所有
添加新行/列


如果你仔細(xì)觀察的話就會(huì)發(fā)現(xiàn)新列是用,(空格也行)隔開的,而新行是用;隔開的,很符合我之前提到的;換行規(guī)則吧~ 需要注意的是添加新的矩陣兼容性
矩陣向量化

矩陣計(jì)算
繼續(xù)拿上面的a為例吧

矩陣相加

矩陣相減

矩陣相乘
叉乘
需要注意的是矩陣的兼容性

點(diǎn)乘

矩陣除法
指的是給矩陣中每一個(gè)元素都除以一個(gè)相同的數(shù)字

矩陣冪運(yùn)算

矩陣指數(shù)運(yùn)算

矩陣對(duì)數(shù)運(yùn)算
以e為底的

以2為底的
這里用的例子還是原來(lái)的3 X 3例子并使上面的e e e

以10為底的
自行把2換成10就可以了
函數(shù)
length()

length返回的是長(zhǎng)度,有可能是行的個(gè)數(shù)有,可能是列的個(gè)數(shù)。這取決于那個(gè)時(shí)候更大
max()

對(duì)于向量來(lái)說會(huì)返回其中最大的一個(gè)數(shù)字

對(duì)行向量來(lái)說會(huì)返回最大的一個(gè)數(shù)字

對(duì)矩陣來(lái)說會(huì)返回一個(gè)向量,向量的每一行對(duì)應(yīng)原來(lái)矩陣每一行的最大值

返回矩陣中最大的一個(gè)數(shù)值

返回一個(gè)行向量,對(duì)應(yīng)該列最大的數(shù),1代表列

返回一個(gè)向量,對(duì)應(yīng)該行最大的數(shù),2代表行
floor()

向下圓整
ceil()

向上圓整
sum()

返回一個(gè)行向量,將每一列相加,1代表列

返回一個(gè)向量,將每一行相加,2代表行
flipud()

將矩陣上下顛倒
畫圖
簡(jiǎn)單圖像


畫一個(gè)二次函數(shù)吧!
hold on %比如說我們還想在原來(lái)的基礎(chǔ)上畫一個(gè)圖像
y2 = -x .^ 2 + 1;
plot(x, y2, 'r');

% 加標(biāo)簽
xlabel("x value");
ylabel("y value");
legend("x^2", "-x^2+1"); % 對(duì)應(yīng)圖中的顏色線條注釋
title("first plot");
cd Desktop; print -dpng "firstPlot.png" %會(huì)保存到桌面上

畫多個(gè)圖
figure(1); plot(x, y1);
figure(2); plot(x, y2);

subplot()
subplot(1, 2, 1);

第一個(gè)和第二個(gè)參數(shù)代表的是把圖分為 1 X 2, 第三個(gè)參數(shù)是使用第一個(gè)部分。
subplot(1,2,1); %使用第一部分
plot(x,y1);
subplot(1,2,2); %使用第二部分
plot(x,y2,'r');

axis([0.5 1; -1 1]);
這個(gè)可以改變軸的長(zhǎng)度,前兩個(gè)是x軸,后兩個(gè)是y軸,從起始長(zhǎng)度到結(jié)束長(zhǎng)度。
clf
清楚之前畫過的圖像
彩色矩陣圖矩陣圖
a = magic(10);
imagesc(a);

額外參數(shù)
imagesc(a), colorbar, colormap gray;

colorbar指的是右邊的棒狀色卡,colormap "color"指的是畫面的顏色
基本語(yǔ)法
for
for i=1:10
disp("Hello world");
end;
不像python,octave中的for不需要縮進(jìn), 其次是賦值1:10,需要end
while
a = 10;
while a > 0
disp("HI");
a -= 1;
end;
需要end
if/else
> if a > 1
> disp("a is bigger than 1");
> else
> disp("a is smaller than 1");
> endif;
>> a is smaller than 1
結(jié)束的時(shí)候是endif.