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

 

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