翻译: Octave 入门教程

Posted 架构师易筋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译: Octave 入门教程相关的知识,希望对你有一定的参考价值。

说明

吴恩达老师的课程介绍Octave处理矩阵,几何图形,过滤出独立音频只要用一句代码搞定,所以也过来入门。

下载

下载地址: https://github.com/octave-app/octave-app/releases
下载并安装

在这里插入图片描述

更多种安装方式请参考
https://wiki.octave.org/Octave_for_macOS

学习资源

https://wiki.octave.org/Category:Resources

https://wiki.octave.org/Publications_using_Octave#Books

命令入门,教程https://wiki.octave.org/Using_Octave, 按照教程过一遍命令即可。
在这里插入图片描述

变量赋值

使用分配值给变量=(注意:分配是通过值传递)。

a  =  1 ;

注释

#%开始注释行,该注释行将继续到该行的末尾。

命令评估

除非以分号终止,否则每个命令的输出都将打印到控制台;。该DISP命令可用于打印输出的任何地方。使用exitquit退出控制台。

t = 99 + 1 # prints 't = 100'
t = 100

t = 99 + 1; # nothing is printed
disp(t);

100

数字运算

除了标准算术运算法则之外,还可以使用许多数学运算符。操作是浮点数。

x = 3/4 * pi;
y = sin (x)
y =  0.70711

矩阵

八度中的数组称为矩阵。一维矩阵称为向量。使用空格或逗号,分隔行和分号中的元素;以开始新行。

rowVec = [8 6 4]
rowVec =
   8   6   4
columnVec = [8; 6; 4]
columnVec =
   8
   6
   4
mat = [8 6 4; 2 0 -2]
mat =
   8   6   4
   2   0  -2
size(mat)
ans =
   2   3
length(rowVec)
ans =  3

线性代数

使用Octave的矩阵语法,许多常见的线性代数运算都很容易编程。

columnVec  *  rowVec
ans = 
   64 48 32 
   48 36 24 
   32 24 16
rowVec  *  columnVec
ans = 116
columnVec '
ans = 
   8 6 4

访问元素

Octave以1为第一个数索引。矩阵元素的访问方式为 matrix(rowNum, columnNum)

mat(2,3)
ans = -2

用循环控制流

Octave支持for和while循环以及其他控制流结构。

x = zeros (50,1);
for i = 1:2:100 # iterate from 1 to 100 with step size 2
  x(i) = i^2;
endfor

y = zeros (50,1);
k = 1;
step = 2;
while (k <= 100)
  y(k) = k^2;
  k = k + step;
endwhile

向量化

使用矢量语法通常可以替换或简化For循环。运算符*,/和^都支持按元素操作.,在运算符之前写点。许多其他功能操作逐元素默认(sin,+,-等等)。

i = 1:2:100;      # create an array with 50-elements
x = i.^2;         # each element is squared
y = x + 9;        # add 9 to each element
z = y./i;         # divide each element in y by the corresponding value in i
w = sin (i / 10); # take the sine of each element divided by 10

绘图 画2D正弦 sin

可以使用矢量参数调用函数图以创建2D线图和散点图。

plot (i / 10, w);
title ('w = sin (i / 10)');
xlabel ('i / 10');
ylabel ('w');

在这里插入图片描述

字符串

字符串只是字符数组。可以使用带有sprintf或 fprintf的C样式格式来组成字符串。

firstString = "hello world";
secondString = "!";
[firstString, secondString] # concatenate both strings
ans = hello world!
fprintf ("%s %.10f \\n", "The number is:", 10)
The number is: 10.0000000000

If-else

条件语句可用于在代码中创建分支逻辑。

# Print 'Foo'      if divisible by 7,
#       'Fizz'     if divisible by 3,
#       'Buzz'     if divisible by 5,
#       'FizzBuzz' if divisible by 3 and 5
for i = 1:1:20
  outputString = "";
  if (rem (i, 3) == 0)  # rem is the remainder function
    outputString = [outputString, "Fizz"];
  endif
  if (rem (i, 5) == 0)
    outputString = [outputString, "Buzz"];
  elseif (rem(i,7) == 0)
    outputString = "Foo";
  else
    outputString = outputString;
  endif
  fprintf("i=%g: %s \\n", i, outputString);
endfor
i=1:  
i=2:  
i=3: Fizz 
i=4:  
i=5: Buzz 
i=6: Fizz 
i=7: Foo 
i=8:  
i=9: Fizz 
i=10: Buzz 
i=11:  
i=12: Fizz 
i=13:  
i=14: Foo 
i=15: FizzBuzz 
i=16:  
i=17:  
i=18: Fizz 
i=19:  
i=20: Buzz

获得帮助

help plot
doc plot

Octave伪造包

可以从Octave Forge网站上添加社区开发的软件包, 以扩展Octave核心库的功能。(Matlab用户:Forge软件包的行为类似于Matlab的工具箱。)pkg命令用于管理这些软件包。例如,要使用Forge中的图像处理库,请使用:

pkg install -forge image # install package
pkg load image           # load new functions into workspace

以上是关于翻译: Octave 入门教程的主要内容,如果未能解决你的问题,请参考以下文章

Octave入门

Ubuntu通过源代码编译安装Octave 4.0

Ng第五课:Octave 教程(Octave Tutorial)2

#yyds干货盘点# Octave简明教程

如何将此 JavaScript 代码片段翻译成 Parenscript?

6Octave教程