文章目录
提供在线使用Octave: Octave online
1 基本内容
1.1 基本计算
Octave中的 加、减、乘、除运算:
>> 2 + 2
ans = 4
>> 3 - 2
ans = 1
>> 5 * 8
ans = 40
>> 1 / 2
ans = 0.50000
同时也可以进行平方、立方等指数运算:
>> 2^2
ans = 4
>> 2^3
ans = 8
>> 2 + 3 % + 5
ans = 5
在Octave中,我们可以使用符号 % 来进行注解,其后面的同行语句都将不会得到执行。如果你熟悉java语言,可以类比为//,或者是Python中的 #。
1.2 逻辑预算
常用的逻辑运算包括:等于(==)、不等于(~=)、并(&&)、或(||)四种,分别用不同的符号表示。
运算的结果用0、1表示,1表示成立,0表示不成立。
>> 1 == 2
ans = 0
>> 1 == 1
ans = 1
>> 1 ~= 2
ans = 1
>> 1 && 0
ans = 0
>> 1 || 0
ans = 1
在Octave中,同时还内置了一些函数来进行逻辑运算,比如异或运算就可以用xor这个函数来代替:
>> xor(3, 1)
ans = 0
>> xor(3, 3)
ans = 0
>> xor(1, 0)
ans = 1
在Octave中内置了很多的函数,有时,我们可能记不太清某个函数的具体用法,这个时候,Octave给我们提供了 help 命令,通过这个命令可以查看函数的定义以及示例。比如,我们想看下xor这个函数怎么用,可以输入:help xor。
1.3 变量
同其他编程语言一样,我们也可以在Octave中定义变量,语法跟其他语言也比较类似:
>> a = 3
a = 3
>> a = 3;
上面的例子中,我们定义了变量a,并将它赋值为3。
有一个细节需要我们注意的是:在第一次执行a = 3的后面没有加;号,Octave在执行完赋值语句后又打印出了变量a的值。而在第二句中,我们在赋值语句的末尾添加了;号,这个时候,Octave只会执行赋值语句,将不再打印变量值。
除了将数值赋给一个变量,我们也可以将字符串、常量赋给变量:
>> b = 'hi'; % 因为加了;号,没有打印出b的值
>> b % 直接输入变量名称,即可打印变量值
b = hi
>> c = (3 >= 1)
c = 1
>> a = pi;
>> a
a = 3.1416
在上面的第二行语句,直接输入了变量名称(没有分号),Octave直接打印出了变量的值。
除此以外,也可以使用disp函数来完成打印变量值的功能:
>> disp(a)
3.1416
结合printf
函数,还能实现格式化打印。还是以上面的变量a为例:
>> disp(sprintf('2 decimals: %0.2f', a))
2 decimals: 3.14
>> disp(sprintf('6 decimals: %0.6f', a))
6 decimals: 3.141593
printf 函数沿用了C语言的语法格式,所以如果你有学习过C语言的话,对上面的写法应该会比较熟悉。
除了使用printf外,利用format long
、format short
也可以指定打印的精度,在Octave中,short
是默认的精度:
octave:32> format long
octave:33> a
a = 3.14159265358979
octave:34> format short
octave:35> a
a = 3.1416
2 向量和矩阵
2.1 向量/矩阵的生成
在Octave中可以这样定义矩阵:将矩阵的元素按行依次排列,并用[]包裹,矩阵的每一行用;分割。
下面定义了一个3×2的矩阵A:
>> A = [1 2; 3 4; 5 6]
A =
1 2
3 4
5 6
说明:;
号在这里的作用可以看做是换行符,也就是生成矩阵的下一行。
在命令行下,也可以将矩阵的每一行分开来写:
>> A = [1 2;
> 3 4;
> 5 6]
A =
1 2
3 4
5 6
向量的创建与矩阵类似:
>> V1 = [1 2 3]
V1 =
1 2 3
>> V2 = [1; 2; 3]
V2 =
1
2
3
在上面的例子中,V1是一个行向量,V2是一个列向量。
其他一些写法向量 = 起点:间隔:终点
: