Octave簡(jiǎn)明教程

這里就不介紹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] 
矩陣a

注意一下,;代表的是換行,每一行中可以拿,隔開也可以不用,直接空開就可以。

特殊矩陣初始化

以下矩陣創(chuàng)建中第一個(gè)參數(shù)都是行,第二個(gè)都是列

1矩陣
0矩陣
隨機(jī)矩陣
方差標(biāo)準(zhǔn)差都為1的矩陣
魔法矩陣

這個(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為例吧

重新賦值
將第一行的值替換成10 11 12

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

添加新行/列
添加到新列
添加到新行

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

矩陣向量化

矩陣計(jì)算

繼續(xù)拿上面的a為例吧

矩陣相加
全部加1
矩陣相減
全部減1

矩陣相乘

叉乘

需要注意的是矩陣的兼容性

點(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.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容