Octave基本语法

Operations:

相比于其它的语言如 NumPy ,Octave用于数学运算方面,的确好使!
一行更比六行强?

  • ~= 不等于符号
  • && 与 操作符
  • || 或 操作符
  • Xor(1,0) = 1 或操作符
  • % 表示注释,类似于#
  • Disp() 表示打印
  • 按照步长建立数组:
octave:9> V = 1:0.1:2
V =
1.0000    1.1000    1.2000    1.3000    1.4000    1.5000    1.6000    1.7000    1.8000    1.9000    2.0000

octave:18> V = 1:6
V =
   1   2   3   4   5   6		
%与其它编程语言不大一样的一点在于步长项在中间,这样子的确比较好理解;
%与其它的编程语言一样,步长这一项是可以忽略的,但是这样一下子把中间项给忽略了,就比较难受
  • Ones():
    可用于快速生成矩阵,默认值为1
	octave:19> ones(2,3)
ans =
   1   1   1
   1   1   1

	octave:20> 2*ones(2,3)
ans =
   2   2   2
   2   2   2
  • Zeros():
    可用于快速生成矩阵,默认值为0
octave:21> zeros(2,3)
ans =
   		0   0   0
   		0   0   0
  • Rand():
    用于快速生成矩阵,值为0—1的小数
octave:22> rand(2,3)
ans =
   		0.089023   0.089996   0.108733
   		0.808496   0.961550   0.508956
   		
 %如果我们给只出一个参数,那么它会自动生成一个n*n 的一个矩阵
octave:1> rand(3)
ans =

   0.65676   0.64577   0.53442
   0.11735   0.23649   0.45517
   0.70716   0.46710   0.84682

  • Randn():
octave:26> w = -6 + sqrt(10)*(randn(3,2))	%生成一个以-6为均值的10为方差的3*2矩阵
w =
   			-1.6360   -3.2193
   			-3.5828   -3.4949
   			-5.7931  -11.9905
  • hist():
    用于绘制直方图
octave:24> hist(w)
  • Eye():
    用于绘制单位向量
octave:28> eye(3)
ans =
Diagonal Matrix

   1   0   0
   0   1   0
   0   0   1
  • Pwd:
    显示当前所在路径
  • Who:
    显示所有的变量
octave:32> who
Variables in the current scope:
A    B    C    V    a    ans  w
  • Whos:
    显示出当前变量更加详细的信息
octave:35> whos
Variables in the current scope:

   				Attr Name        Size                     Bytes  Class
  				 ==== ====        ====                     =====  =====
        			A           3x2                         48  double
       				B           2x3                         48  double
        			C           1x3                         24  double
        			V           1x6                         24  double
        			a           1x1                          8  double
        			ans         1x1                          8  double
       	 			w           3x2                         48  double

Total is 29 elements using 208 bytes

移动数据

  • Size():
    以数组的形式显示出当前变量的维度
octave:33> size(A)
ans =
   3   2

同时外面还可以索引出相应的维度数

octave:34> size(A,1)
ans =  3
  • Clear:
octave:36> clear(A)
error: clear: all arguments must be strings

octave:36> clear A

clear		%这将会删除所有的变量
  • 索引赋值:
B =
   2   2   2
   2   2   2
octave:40> D = B(1:2)
D =
2   2
  • Save 存储数据:
octave:41> D = eye(3)
D =
Diagonal Matrix
   1   0   0
   0   1   0
   0   0   1
octave:42> save hello.mat D
  • Load 加载数据:
octave:46> load hello.mat D
octave:47> D
D =
Diagonal Matrix
   1   0   0
   0   1   0
   0   0   1
octave:48> clear D
octave:49> load hello.mat A
error: load: empty name keyword or no data found in file 'hello.mat
%可以看出,就算是重新加载文件也不能随便的乱赋值的

octave:53> save hello.txt D -ascii
%此命令使得文件以可见的形式进行存储了
  • 索引:
octave:54> A = [1 2 ; 3 4 ;5 6]
A =
   1   2
   3   4
   5   6
octave:55> A(3,2)
ans =  6

%  :代表一行或者一列
octave:56> A(:,2)
ans =
   2
   4
   6
octave:57> A(3,:)
ans =
   5   6

%高级用法,取出第1,3行的所有数据
				octave:59> A([1 3],:)
ans =
   				1   2
   				5   6

				%在矩阵的右面再加一列的操作
				octave:61> A = [A,[30;40;50]]
A =
   				 1   10   30
   				 3   11   40
   				 5   12   50
   				 
				%赋值给索引,实现列数增加,这种方法比较好理解
				octave:60> A(:,2) = [10,11,12]
A =
    			1   10
    			3   11
    			5   12
				
  • 将矩阵转化成向量
octave:62> A(:)
ans =
    1
    3
    5
   10
   11
   12
   30
   40
   50
  • 矩阵的结合:
C = [A B]			%将B拼在A的右面
C = [A,B]			%将B拼在A的右面(这样比较好理解)
C = [A ; B]			%将B拼在A的下面
  1. 计算数据
  • 取反:
octave:64> -A
ans =
   -1  -10  -30
   -3  -11  -40
   -5  -12  -50
  • abs():
			octave:67> abs(-A)
ans =
    		1   10   30
    		3   11   40
    		5   12   50
  • Log():
octave:65> log(A)
ans =
   0.00000   2.30259   3.40120
   1.09861   2.39790   3.68888
   1.60944   2.48491   3.91202
  • 如何让每一个元素都+2:
octave:69>  A + 2*ones(size(A,1),size(A,2))
ans =
    		3   12   32
   			5   13   42
    		7   14   52
    		
octave:71> A+2
ans =
    		3   12   32
    		5   13   42
    		7   14   52	
  • 矩阵的转置:
octave:72> A'
ans =
    1    3    5
   	10   11   12
   	30   40   50
octave:73> (A')'
ans =
    1   10   30
    3   11   40
    5   12   50
  • 获取矩阵的最大值:
octave:76> B = A(:)
B =
    1
    3
    5
   10
   11
   12
   30
   40
   50
octave:77> [val,ind] = max(B)
val =  50					%第一位表示的是最大值
ind =  9					%第二位表示的是最大值所在列的位置

%如果是取矩阵的最大值,那么实际上是得到每一列的最大值
octave:78> max(A)
ans =
    5   12   50
  • 矩阵判断:如果真返回1,假返回0
octave:80> A<12
ans =
  1  1  0
  1  1  0
  1  0  0
  • Magic幻方:
octave:83> B = magic(3)
B =
   8   1   6
   3   5   7
   4   9   2
  • Find()返回:
%可以看出实际上(r,c)代表find到的数的坐标
octave:85> [r,c]=find(A<12)
r =
   1
   2
   3
   1
   2
c =
   1
   1
   1
   2
   2
  • Sum()求和:
%可以看出实际上是返回的各列的和
octave:87> sum(A)
ans =
     9    33   120
  • Prod()乘积:
%可以看出实际上是返回的各列的乘积
octave:88> prod(A)
ans =
      15    1320   60000
  • Floor()向下取整:
octave:89> A+0.5
ans =
    1.5000   10.5000   30.5000
    3.5000   11.5000   40.5000
    5.5000   12.5000   50.5000
octave:90> floor(A)
ans =
    1   10   30
    3   11   40
    5   12   50
  • Ceil()向上取整:
octave:94> ceil(A)
ans =
    2   11   31
    4   12   41
	6   13   51
  • Pinv()求逆矩阵:
octave:15> pinv(b)
ans =
   0.147222  -0.144444   0.063889
  -0.061111   0.022222   0.105556
  -0.019444   0.188889  -0.102778
  1. Plotting data
  • 绘制正弦与余弦函数实例
octave:24> t = [0:0.01:0.98];	%生成横坐标
octave:25> y1 = sin(2*pi*4*t);	%正弦函数
octave:26> y2 = cos(2*pi*4*t);	%余弦函数
octave:27> plot(t,y1);			%绘图
octave:28> hold on;				%在原图像基础上进行绘图
octave:29> plot(t,y2,'r');		%绘制余弦函数图像并设置颜色为红色
octave:30> xlabel('time')		%设置x轴标签为time
octave:31> ylabel('value')		%设置y轴标签为value
octave:32> legend('sin','cos')	%为图像添加标记
octave:34> title('My Plot')		%设置图像的标题
octave:35> pwd					%查看当前的目录
ans = C:\Users\浜庢捣娲
octave:36> cd 'E:\AI'			%更改目录
octave:37> pwd
ans = E:\AI
octave:39>  print -dpng 'My Plot.png'	%以png的形式存储图片

在这里插入图片描述

octave:43> figure(1):plot(t,y1)
ans = [](1x0)
octave:44> figure(2):plot(t,y2)	%可以实现同时绘制两个图
ans = [](1x0)
octave:45> figure(yo):plot(t,y2)	%另外()里面需要数字
error: 'yo' undefined near line 1 column 8

octave:46> subplot(1,2,1)		%把显示窗口分为1*2 的样式,取第一块
octave:47> plot(t,y1)			%绘制正弦图
octave:48> subplot(1,2,2)		%把显示窗口分为1*2 的样式,取第二块
octave:49> plot(t,y2,'r')		%绘制余弦图
octave:50> axis([0.5 1 -1 1])		%修改x,y轴的刻度

在这里插入图片描述

  • 同时执行多条语句
octave:52> a=1,b=3		%同时执行多条语句,并展示
a =  1
b =  3
octave:53> a=1;b=3		
b =  3
octave:54> a=1;b=3;		%同时执行多条语句,不展示
octave:55> a=1,b=3;		
a =  1
%可以看出后面带了分号就不会展示了
  • 16
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值