Octave文法_Octave

來源:互聯網
上載者:User
向量

分號:分割行

空格或逗號:分割列 建立與訪問 行向量

空格或逗號分割

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

分號分割

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

與向量一樣,空格或逗號分割列,分號分割行

冒號:代表所有,所有行或所有列 建立

>>   A = [1, 2; 3, 4] % 一行寫完A =   1   2   3   4>> A = [1, 2; % 分行寫> 3, 4]A =   1   2   3   4
建立技巧

a:c --- 從a到c

a:b:c --- 從a,間隔b,到c

向量也可以用這樣的方法建立

>> 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
轉置矩陣
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) * Aans =   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
隨機矩陣
>> rand(1, 3) % 0~1的隨機數,1行3列ans =   0.99291   0.65946   0.95102
高斯分布矩陣
>> randn(1, 3) % 高斯分布ans =   0.14646   2.02587   1.33266
訪問

冒號:代表所有,所有行或所有列 訪問元素

A =   1   2   3   4   5   6   7   8   9   >> A(2, 2) % 第二行,第二列,先定行再定列ans =  5
訪問單行或單列
>> A(1, :) % 第一行,所有,元素ans =   1   2   3   >> A(:, 2) % 第二列,所有,元素ans =   2   5   8
訪問多行或多列
>> 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上,再賦給AA =   1   2   >> A = [A; 3] % A有兩列,3隻有一列,規模不匹配error: vertical dimensions mismatch (1x2 vs 1x1)
添加行或列
>> A = [A; [3, 4]] % 將向量[3, 4],作為行,添加到A上,在賦給AA =   1   2   3   4   >> A = [A, [5; 6]] % 將向量[5, 6],作為列,添加到A上,在賦給AA =   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
所有的資料放入一個向量中
>> AA =   1   2   3   4>> A(:)ans =   1   3   2   4>> A(:)'ans =   1   3   2   4
賦值

在訪問基礎上,給定相同規模的資料

A =   1   2   3   4   5   6   7   8   9>> A(3, 3) = 10 % 修改單個元素的值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
運算 加,減
>> A = [1 1; 1 1]A =   1   1   1   1>> B = [2 2; 2 2]B =   2   2   2   2>> A + Bans =   3   3   3   3>> A - Bans =  -1  -1  -1  -1>> A - 1ans =  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 * Bans =   19   22   43   50>> -A % -1 * Aans =  -1  -2  -3  -4
點運算

對應元素運算

維度相同:對應元素相乘

行維度相同:每行對應元素相乘

列維度相同:每列對應元素相乘

A .* B = B .* A

乘 *;除 /; 平方 ^;等 維度相同

A =   1   1   1   1B =   2   3   2   3>> A .* Bans =   2   3   2   3
行維度相同
A =   1   1   1   1B =   5   6>> A .* Bans =   5   6   5   6
列維度相同
A =   1   1   1   1B =   5   6>> A .* Bans =   5   5   6   6
點除

矩陣乘以常數,A * 2,除可以是,A / 2

反過來,2 * A沒問題,2 / A 就不行,要用2 ./ A

A =   1   2   3   4>> 1 ./ Aans =   1.00000   0.50000   0.33333   0.25000
邏輯

每一個元素做比較,標記0或1

&gt, <, ==, !=(或~=), &&, ||

A =   1   2   3   4>> A > 2ans =   0   0   1   1
位元運算

或 | ,函數xor

且 &

非 ~

異或 ^ 控制語句 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沒有區別 函數

size:擷取矩陣維度

length:擷取最大維度

who:變數列表

whos:變數詳情

clear 變數名:刪除指定變數

clear:刪除所有變數

find:返回符合條件元素的下標

log:log以e為底

exp:e的多少次方

abs:絕對值

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 % 現在都有哪裡變數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  doubleTotal is 10082 elements using 80516 bytes
clear

刪除變數

>> clear featuresX>> whoVariables in the current scope:A      aSize  ans    w>> clear % 清除全部變數>> who % 一個變數都沒有了
find

返回符合條件元素的下標

A =   5   6   7   8>> [r, c] = find(A > 6) % 符合要求的是:第二行第一個和第二行第二個r =   2   2c =   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

求積

>> AA =   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 =  5ind =  2
矩陣比較

兩個矩陣比較每個元素,保留大的

>> 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
行與列的最大值

參數二:與之比較的矩陣
參數三:按行還是按列

>> 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
自訂函數 建立步驟

建立存放函數的檔案(檔案名稱要與函數名相同,.m結尾)

square.m

建立函數

% 一個傳回值function 傳回值 = 函數名(參數列表)    函數體end% 多個傳回值function [傳回值1, 傳回值2] = 函數名(參數列表)    函數體end
function y = square(x)  y = x^2;endfunction [y1, y2] = squareAndCube(x)  y1 = x^2;  y2 = x^3;end
調用

進入到存放函數檔案的目錄

添加存放函數檔案的目錄,到,搜尋路徑

>> cd Downloads/ % 進入存放函數檔案的目錄>> square(2)ans =  4>> addpath('~/Downloads') % 添加到搜尋路徑>> cd ..>> square(2)ans =  4
資料 路徑

與Linux命令一樣

>> pwd % 當前路徑ans = /Users/XXX>> cd ~/Developer>> pwdans = /Users/XXX/Developer>> ls % 列出目錄檔案和檔案夾>> cd .. % 回到上級目錄
載入與儲存
>> load featuresX.dat % 載入資料,變數名為featuresX>> data = load('ex1data1.txt'); % 變數名為data>> save featuresX.mat featuresX; % 將featuresX中的資料儲存到featuresX檔案中>> save hello.txt v -ascii % 將變數v中得資料已ascii編碼方式儲存到hello.txt中
其他 命令

簡化命令列:PS1('>> ');

關閉圖表:close或close all

命令列清屏:clc 注釋

%後為注釋 列印 自動列印

a = 3 % 會列印資料a = 3; % 不會列印資料,分號可以防止輸出
格式化
disp(pi) % 輸出:3.1416disp(sprintf('pi is %.2f', pi)) % c語言風格
預設格式
format long % 修改預設列印格式
協助
help size % 查看size函數的協助文檔help help % 查看help函數的協助文檔
圖 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.