目錄
函數
在Octave中,定義一個函數需要使用function
關鍵字,然後緊跟在 function 後面的是函數的聲明,包括返回值,函數名稱和參數,之後換行來實現具體的函數功能。
Octave的函數不需要顯示的返回語句,Octave會將函數第一行聲明的返回值返回給調用方,因此,我們在函數體中只需將最終的計算結果賦給定義的返回值,比如例子中的y1。
還有一點需要說明的是,在Octave中,函數可以返回多個值:
function y = squareThisNumber(x)
y = x^2;
function [y1, y2] = squareAndCubeThisNumber(x)
y1 = x^2;
y2 = x^3;
控制語句
>> v=zeros(10,1);
>> for i=1:10,
v(i) = 2^i;
end;
>> v
v =
4
16
64
256
1024
>> for i=indices,
disp(i);
end;
2
4
6
8
10
>> i = 1;
>> while i <= 5,
v(i) = 100;
i = i+1;
end;
>> v
v =
100
100
64
256
1024
>> i=1;
>> while true,
v(i) = 999;
i = i+1;
if i == 6,
break;
end;
end;
>> v
v =
999
999
64
256
1024
>> v(1)
ans = 999
>> v(1) = 2;
>> if v(1)==1,
disp('The value is one');
elseif v(1) == 2,
disp('The value is two');
else
disp('The value is not one or two');
end;
基礎運算
%加減乘除和冪次方操作
octave:1> 2 + 3
ans = 5
octave:2> 4 - 2
ans = 2
octave:3> 3 * 7
ans = 21
octave:4> 15 / 3
ans = 5
octave:5> 4 ^ 2
ans = 16
矩陣和向量
%矩陣和向量生成
>> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
>> v = [1 2 3]
v =
1 2 3
%一般矩陣用大寫字母,向量用小寫字母
>> v = 1:6
v =
1 2 3 4 5 6
%全1矩陣
>> ones(3, 3)
ans =
1 1 1
1 1 1
1 1 1
%全0矩陣
>> zeros(3,2)
ans =
0 0
0 0
0 0
%隨機矩陣 隨機樣本位於[0,1)
%高斯隨機矩陣 從標準正態分佈中返回一個或多個樣本值
>> rand(3, 3)
ans =
0.76554 0.21232 0.22204
0.17062 0.23965 0.27107
0.91687 0.91276 0.65453
>> randn(3,3)
ans =
0.50870 0.84712 -0.33820
1.20282 1.18850 0.75058
0.92504 -2.08136 0.40063
%單位矩陣
>> eye(3)
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
%獲取矩陣長度
>> A = [1 2;3 4;5 6]
A =
1 2
3 4
5 6
>> size(A)
ans =
3 2
>> length(A)
ans = 3
%查看當前變量
>> who
Variables in the current scope:
A ans
>> whos
Variables in the current scope:
Attr Name Size Bytes Class
==== ==== ==== ===== =====
A 3x2 48 double
ans 1x1 8 double
Total is 7 elements using 56 bytes
%矩陣的運算
1、讀取
Aij=A(i,j);讀單個元素
Ai=A(i,:);讀i行全部元素
Aj=A(:,j);讀j列全部元素
B=A(i:m,j:n);獲取i-m列,j-n行的子陣
2、賦值
A(i,j)=k;將k賦給Aij
A(i,:)=k;將第i行元素全置爲k
3、添加刪除
設A爲3*3矩陣
A(4,:)=[1 2 3] 增加第四行元素爲1,2,3。 列同理
A(:,2)=[]刪除第二列。行同理
4、獲取矩陣屬性
size(A,1)、rows(A) 行元素數
size(A,2)、columns(A)列元素數
注:rows(A)、columns(A)爲octave獨有有命令
size(A) 獲取行、列的數值
numel(A) 獲取矩陣元素數
isempty(A) 矩陣是否爲空 0不爲空 1爲空
5、矩陣運算
2*A A+B A-B 矩陣乘、加、減
inv(A) A的逆
det(A) A的行列式
eig(A) 矩陣的特徵值(Eigenvalue decomposition)
svd(A) 矩陣的奇異值(Singular Value Decomposition)
注:奇異值定義:設A爲m*n階矩陣,A^T表示A的轉置矩陣,A^T*A的n個特徵值的非負平方根叫作A的奇異 值。記爲σi(A)。
6、Element-Wise Operations
兩個矩陣對應位置元素之間的運算
A.+A A.*A A./A A.^3 分別爲加乘除冪操作
繪圖
%sin
>> t=[0:0.01:0.98];
>> y1 = sin(2*pi*4*t);
>> plot(t,y1);
% hold on 命令可在原圖像中再添加新曲線,輸入close命令可以關閉圖像,clf清理圖像
%分區域畫圖
>> subplot(1,2,1);
>> plot(t,y1);
>>subplot(1,2,2);
>> plot(t,y2);
>> axis([0.5 1 -1 1])
%添加座標說明
>> xlabel('time'); % 指定X軸的名稱
>> ylabel('value'); % 指定Y軸的名稱
>> legend('sin', 'cos'); % 標識第一條曲線是sin,第二條曲線是cos
>> title('sin and cos function'); % 給圖片附一個標題
%網狀圖繪製 surf
surf(theta0_vals,theta1_vals,J_vals);
%繪製等高線 contour
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 3, 20));
plot(theta(1),theta(2),'rx','MarkerSize', 10, 'LineWidth', 2);
數據加載及保存
%加載、保存數據
>> data = load('ex1data1.txt');
>> X = data(:, 1); y = data(:, 2);
>>save hello.mat ans
>>save hello.txt ans -ascii
%清空變量
>>clear
>>clear ans
添加環境變量
addpath('C:\Users\ang\desktop')
tips
- 在一條語句的後面添加一個分號,不會立即輸出該語句的值;
help
命令,通過這個命令可以查看函數的定義以及示例;
參考:
- https://www.jianshu.com/p/2853927f05ae
- https://www.cnblogs.com/ash975/p/5847155.html
- https://blog.csdn.net/quiet_girl/article/details/70142953