Octave常用語(yǔ)法

大體內(nèi)容是轉(zhuǎn)的荚藻,但是繪圖部分做了補(bǔ)充和修改。

向量


  • 分號(hào):分割行
  • 空格或逗號(hào):分割列

創(chuàng)建與訪問(wèn)

行向量

空格或逗號(hào)分割

>> v = [1 2 3] % 等效:v = [1, 2, 3]
v =
   1   2   3
>> v(2) % 只有一行,所以指定就是列
ans =  2

列向量

  • 分號(hào)分割
>> v = [1; 2; 3]
v =
   1
   2
   3
>> v(2) % 只有一列际看,所以指定就是行
ans =  2

矩陣


  • 與向量一樣掌实,空格或逗號(hào)分割列,分號(hào)分割行
  • 冒號(hào):代表所有听想,所有行或所有列

創(chuàng)建

>>   A = [1, 2; 3, 4] % 一行寫(xiě)完
A =
   1   2
   3   4
>> A = [1, 2; % 分行寫(xiě)
> 3, 4]
A =
   1   2
   3   4

創(chuàng)建技巧

  • a:c --- 從a到c
  • a:b:c --- 從a腥刹,間隔b,到c
  • 向量也可以用這樣的方法創(chuàng)建
>> A = [1:3; 4:6]
A =
   1   2   3
   4   5   6
>> A = [1:2:5; 2:2:6]
A =
   1   3   5
   2   4   6

特殊矩陣


單位矩陣

>> eye(3) % 單位矩陣
ans =
Diagonal Matrix
   1   0   0
   0   1   0
   0   0   1
>> flipud(eye(3))
ans =
Permutation Matrix
   0   0   1
   0   1   0
   1   0   0

轉(zhuǎn)置矩陣

A =
   1   2
   3   4
>> A'
ans =
   1   3
   2   4

逆矩陣

A =
   1   2
   3   4
>> pinv(A)
ans =
  -2.00000   1.00000
   1.50000  -0.50000
>> pinv(A) * A
ans =
   1.00000   0.00000
  -0.00000   1.00000

全1矩陣

>> ones(2, 3)
ans =
   1   1   1
   1   1   1

全0矩陣

>> 0*ones(2, 3)
ans =
   0   0   0
   0   0   0
>> zeros(2, 3)
ans =
   0   0   0
   0   0   0

隨機(jī)矩陣

>> rand(1, 3) % 0~1的隨機(jī)數(shù)汉买,1行3列
ans =
   0.99291   0.65946   0.95102

高斯分布矩陣

>> randn(1, 3) % 高斯分布
ans =
   0.14646   2.02587   1.33266

訪問(wèn)


  • 冒號(hào):代表所有衔峰,所有行或所有列

訪問(wèn)元素

A =
   1   2   3
   4   5   6
   7   8   9
>> A(2, 2) % 第二行,第二列蛙粘,先定行再定列
ans =  5

訪問(wèn)單行或單列

>> A(1, :) % 第一行垫卤,所有,元素
ans =
   1   2   3
>> A(:, 2) % 第二列出牧,所有穴肘,元素
ans =
   2
   5
   8

訪問(wèn)多行或多列

>> A(:, [1, 3]) % 第一列和第三列,所有舔痕,元素
ans =

   1   3
   4   6
   7   9

>> A([1, 3], :) % 第一行和第三行评抚,所有,元素
ans =

   1   2   3
   7   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   2
   3   4
>> A = [A, [5; 6]] % 將向量[5, 6],作為列唬滑,添加到A上告唆,在賦給A
A =
   1   2   5
   3   4   6

矩陣連接

>> A = [1, 2; 3, 4]
A =
   1   2
   3   4
>> B = [5, 6; 7 ,8]
B =
   5   6
   7   8
>> [A; B] % 將B,作為行晶密,添加到A上
ans =
   1   2
   3   4
   5   6
   7   8
所有的數(shù)據(jù)放入一個(gè)向量中
>> A
A =
   1   2
   3   4
>> A(:)
ans =
   1
   3
   2
   4
>> A(:)'
ans =
   1   3   2   4

賦值


  • 在訪問(wèn)基礎(chǔ)上擒悬,給定相同規(guī)模的數(shù)據(jù)
A =
   1   2   3
   4   5   6
   7   8   9
>> A(3, 3) = 10 % 修改單個(gè)元素的值
A =
    1    2    3
    4    5    6
    7    8   10
>> A(1, :) = [0, 0, 0] % 修改一行的值
A =
    0    0    0
    4    5    6
    7    8   10
>> A(2:3, 2:3)
ans =
    5    6
    8   10
>> A(2:3, 2:3) = [0, 0; 0, 0] % 修改指定矩陣的值
A =
   0   0   0
   4   0   0
   7   0   0

運(yùn)算


加,減

>> A = [1 1; 1 1]
A =
   1   1
   1   1
>> B = [2 2; 2 2]
B =
   2   2
   2   2
>> A + B
ans =
   3   3
   3   3
>> A - B
ans =
  -1  -1
  -1  -1
>> A - 1
ans =
  0  0
  0  0

相乘

>> A = [1 2; 3 4]
A =

   1   2
   3   4

>> B = [5 6; 7 8]
B =

   5   6
   7   8

>> A * B
ans =

   19   22
   43   50

>> -A % -1 * A
ans =

  -1  -2
  -3  -4

點(diǎn)運(yùn)算


對(duì)應(yīng)元素運(yùn)算

  • 維度相同:對(duì)應(yīng)元素相乘
  • 行維度相同:每行對(duì)應(yīng)元素相乘
  • 列維度相同:每列對(duì)應(yīng)元素相乘
  • A .* B = B .* A
  • 乘 *稻艰;除 /; 平方 ^懂牧;等

維度相同

A =
   1   1
   1   1
B =
   2   3
   2   3
>> A .* B
ans =
   2   3
   2   3

行維度相同

A =
   1   1
   1   1
B =
   5   6
>> A .* B
ans =
   5   6
   5   6

列維度相同

A =
   1   1
   1   1
B =
   5
   6
>> A .* B
ans =
   5   5
   6   6

點(diǎn)除

  • 矩陣乘以常數(shù),A * 2尊勿,除可以是僧凤,A / 2
  • 反過(guò)來(lái),2 * A沒(méi)問(wèn)題元扔,2 / A 就不行躯保,要用2 ./ A
A =
   1   2
   3   4
>> 1 ./ A
ans =
   1.00000   0.50000
   0.33333   0.25000

邏輯


  • 每一個(gè)元素做比較,標(biāo)記0或1
  • &gt, <, ==, !=(或~=), &&, ||
A =
   1   2
   3   4
>> A > 2
ans =
   0   0
   1   1

位運(yùn)算


  • 或 | 澎语,函數(shù)xor
  • 且 &
  • 非 ~
  • 異或 ^

控制語(yǔ)句


if

i =  1
>> if i == 1
>     disp(1)
>  elseif i == 2
>     disp(2)
>  else
>     disp(3)
>  end

for

>> for i = 1:3 % 從1到3
>     disp(i)
>  end
 1
 2
 3

while

>> while i <= 3
>     disp(i)
>     i = i + 1
>  end
 1
 2
 3

break途事,continue

  • 與C、C++擅羞、Java沒(méi)有區(qū)別

函數(shù)


  • size:獲取矩陣維度
  • length:獲取最大維度
  • who:變量列表
  • whos:變量詳情
  • clear 變量名:刪除指定變量
  • clear:刪除所有變量
  • find:返回符合條件元素的下標(biāo)
  • log:log以e為底
  • exp:e的多少次方
  • abs:絕對(duì)值
  • floor:向下取整
  • ceil:向上取整
  • sum:求和
  • prop:求積

size

  • 獲取矩陣維度
A =

   1   2
   3   4
   5   6
>> aSize = size(A)
aSize =
   3   2
>> size(A, 1) % 3行
ans =  3
>> size(A, 2) % 2列
ans =  2

length

  • 獲取最大維度
A =
   1   2
   3   4
   5   6
>> length(A) % 輸出最大維度
ans =  3

who

變量列表

>> who % 現(xiàn)在都有哪里變量
Variables in the current scope:

A          aSize      ans        featuresX  w

whos

變量詳情

>> whos % 變量詳情
Variables in the current scope:

   Attr Name           Size                     Bytes  Class
   ==== ====           ====                     =====  =====
        A              3x2                         48  double
        aSize          1x2                         16  double
        ans            1x20                        20  char
        featuresX     27x2                        432  double
        w              1x10000                  80000  double

Total is 10082 elements using 80516 bytes

clear

刪除變量

>> clear featuresX
>> who
Variables in the current scope:

A      aSize  ans    w
>> clear % 清除全部變量
>> who % 一個(gè)變量都沒(méi)有了

find

返回符合條件元素的下標(biāo)

A =

   5   6
   7   8

>> [r, c] = find(A > 6) % 符合要求的是:第二行第一個(gè)和第二行第二個(gè)
r =

   2
   2

c =

   1
   2

sum

求和

>> A = [1, 2; 3, 4]
A =

   1   2
   3   4

>> sum(A) % 等效:sum(A, 1)
ans =

   4   6
   
>> sum(A, 2)
ans =

   3
   7

prod
求積

>> A
A =

   1   2
   3   4

>> prod(A) % 等效:prod(A, 1)
ans =

   3   8

>> prod(A, 2)
ans =

    2
   12

max

  • 向量
>> 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
  • 矩陣比較
    兩個(gè)矩陣比較每個(gè)元素尸变,保留大的
>> A = rand(3)
A =
   0.2620788   0.6346345   0.4659161
   0.0880455   0.1258945   0.0079559
   0.0296765   0.7917592   0.4321800
>> B = rand(3)
B =
   0.039237   0.672424   0.214649
   0.491320   0.362929   0.197626
   0.821090   0.675265   0.698960
>> max(A, B)
ans =
   0.26208   0.67242   0.46592
   0.49132   0.36293   0.19763
   0.82109   0.79176   0.69896
  • 行與列的最大值
    參數(shù)二:與之比較的矩陣參數(shù)三:按行還是按列
>> A = [1 2; 3 4]
A =
   1   2
   3   4
>> max(A) % 每列最大值
ans =
   3   4
>> max(A, [], 1) % 每列最大值
ans =
   3   4
>> max(A, [], 2) % 每行最大值
ans =
   2
   4

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é)尾)
square.m
  • 創(chuàng)建函數(shù)
% 一個(gè)返回值
function 返回值 = 函數(shù)名(參數(shù)列表)
    函數(shù)體
end
% 多個(gè)返回值
function [返回值1, 返回值2] = 函數(shù)名(參數(shù)列表)
    函數(shù)體
end
function y = square(x)
  y = x^2;
end
function [y1, y2] = squareAndCube(x)
  y1 = x^2;
  y2 = x^3;
end

調(diào)用


進(jìn)入到存放函數(shù)文件的目錄
添加存放函數(shù)文件的目錄减俏,到召烂,搜索路徑

>> cd Downloads/ % 進(jìn)入存放函數(shù)文件的目錄
>> square(2)
ans =  4

>> addpath('~/Downloads') % 添加到搜索路徑
>> cd ..
>> square(2)
ans =  4

數(shù)據(jù)

路徑

與Linux命令一樣

>> pwd % 當(dāng)前路徑
ans = /Users/XXX

>> cd ~/Developer

>> pwd
ans = /Users/XXX/Developer

>> ls % 列出目錄文件和文件夾

>> cd .. % 回到上級(jí)目錄

載入與保存

>> 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ù)已a(bǔ)scii編碼方式保存到hello.txt中

其他


命令

  • 簡(jiǎn)化命令行:PS1('>> ');
  • 關(guān)閉圖表:close或close all
  • 命令行清屏:clc

注釋

%后為注釋

打印


自動(dòng)打印

a = 3 % 會(huì)打印數(shù)據(jù)
a = 3; % 不會(huì)打印數(shù)據(jù)娃承,分號(hào)可以防止輸出

格式化

disp(pi) % 輸出:3.1416
disp(sprintf('pi is %.2f', pi)) % c語(yǔ)言風(fēng)格

默認(rèn)格式

format long % 修改默認(rèn)打印格式

幫助


help size % 查看size函數(shù)的幫助文檔
help help % 查看help函數(shù)的幫助文檔

繪圖


plot

屬性

  • LineWidth:線寬
  • MarkerFaceColor:標(biāo)記顏色
  • MarkerSize:標(biāo)記大小
t = [0:0.1:0.98];
y1 = sin(2*pi*4*t);
plot(t,y1);
y2 = cos(2*pi*4t);

hold on ;  %  使用 hold on 可以將接下來(lái)繪制的函數(shù)放在一張圖里

plot(t, y2, 'r'); % 第三個(gè)參數(shù)奏夫,表示顏色

xlabel('time');
ylabel('value');  %  標(biāo)記出x和y軸

legend('sin','cos') %  在圖像右上角,用來(lái)區(qū)分多個(gè)函數(shù)的圖例草慧,依次表示兩個(gè)曲線所表示的內(nèi)容

tiitle('my plot') %  在圖像的正上方給圖像加上標(biāo)題

print -dpng 'myPlot.png'  % 輸出圖像,保存在'pwd'目錄下

close % 關(guān)閉圖像

figure(1); plot(t,y1); % 新開(kāi)第一個(gè)窗口繪制y1
figure(2); plot(t,y1); % 新開(kāi)第二個(gè)窗口繪制y2

% pos為向量中為1的行序號(hào)組成的向量桶蛔,neg為向量中為0的行序號(hào)組成的向量 
plot(X(pos,1),X(pos,2),'k+','LineWidth',2,'MarkerSize',7); 
plot(X(neg,1),X(neg,2),'ko','markerFaceColor','y','MarkerSize',7);
Paste_Image.png
 Format arguments:
    linestyle
          '-'  Use solid lines (default).
          '--' Use dashed lines.`
          ':'  Use dotted lines.
          '-.' Use dash-dotted lines.
    markerstyle
          '+'  crosshair
          'o'  circle
          '*'  star
          '.'  point
          'x'  cross
          's'  square
          'd'  diamond
          '^'  upward-facing triangle
          'v'  downward-facing triangle
          '>'  right-facing triangle
          '<'  left-facing triangle
          'p'  pentagram
          'h'  hexagram
    color
          'k'  blacK
          'r'  Red
          'g'  Green
          'b'  Blue
          'm'  Magenta
          'c'  Cyan
          'w'  White 

常用的修改屬性有: 
 "linestyle", 
 "linewidth",
 "color",
 "marker",
 "markersize",
 "markeredgecolor",
 "markerfacecolor".

直方圖


>> w = -6 + sqrt(10)*randn(1, 10000);
>> hist(w)
>> hist(w, 30) % 30組
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匙头,一起剝皮案震驚了整個(gè)濱河市漫谷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹂析,老刑警劉巖舔示,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碟婆,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惕稻,警方通過(guò)查閱死者的電腦和手機(jī)竖共,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)俺祠,“玉大人公给,你說(shuō)我怎么就攤上這事≈┰” “怎么了淌铐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蔫缸。 經(jīng)常有香客問(wèn)我腿准,道長(zhǎng),這世上最難降的妖魔是什么拾碌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任吐葱,我火速辦了婚禮,結(jié)果婚禮上校翔,老公的妹妹穿的比我還像新娘弟跑。我一直安慰自己,他們只是感情好防症,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布窖认。 她就那樣靜靜地躺著,像睡著了一般告希。 火紅的嫁衣襯著肌膚如雪扑浸。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天燕偶,我揣著相機(jī)與錄音喝噪,去河邊找鬼。 笑死指么,一個(gè)胖子當(dāng)著我的面吹牛酝惧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伯诬,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晚唇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了盗似?” 一聲冷哼從身側(cè)響起哩陕,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后悍及,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體闽瓢,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年心赶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扣讼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缨叫,死狀恐怖椭符,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耻姥,我是刑警寧澤艰山,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站咏闪,受9級(jí)特大地震影響曙搬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸽嫂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一纵装、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧据某,春花似錦橡娄、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至筷狼,卻和暖如春瓶籽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背埂材。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工塑顺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俏险。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓严拒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親竖独。 傳聞我的和親對(duì)象是個(gè)殘疾皇子裤唠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容