octave筆記

目錄

 

函數

控制語句

基礎運算

矩陣和向量

繪圖

數據加載及保存

添加環境變量

函數

在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

  1. 在一條語句的後面添加一個分號,不會立即輸出該語句的值;
  2. help 命令,通過這個命令可以查看函數的定義以及示例;

 

參考:

  1. https://www.jianshu.com/p/2853927f05ae
  2. https://www.cnblogs.com/ash975/p/5847155.html
  3. https://blog.csdn.net/quiet_girl/article/details/70142953

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章