1,860
edits
(→Command evaluation: wiki markup) |
(wiki markup for links) |
||
Line 37: | Line 37: | ||
Many mathematical operators are available in addition to the standard | Many mathematical operators are available in addition to the standard | ||
arithmetic. Operations are floating-point. Read more | arithmetic. Operations are floating-point. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Arithmetic.html about elementary math]. | |||
y = sin(x)</pre><pre class="oct-code-output">y = 0.70711 | |||
</pre> | <pre class="oct-code">x = 3/4*pi; | ||
y = sin(x)</pre> | |||
<pre class="oct-code-output">y = 0.70711</pre> | |||
Line 48: | Line 50: | ||
to as vectors. Use a space or a comma <code>,</code> to separate elements in a row and | to as vectors. Use a space or a comma <code>,</code> to separate elements in a row and | ||
semicolon <code>;</code> to start a new row. Read more | semicolon <code>;</code> to start a new row. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Linear-Algebra.html about matrices]. | |||
<pre class="oct-code">rowVec = [8 6 4]</pre> | |||
<pre class="oct-code-output">rowVec = | |||
8 6 4 | 8 6 4 | ||
</pre><pre class="oct-code">columnVec = [8; 6; 4]</pre><pre class="oct-code-output">columnVec = | </pre> | ||
<pre class="oct-code">columnVec = [8; 6; 4]</pre> | |||
<pre class="oct-code-output">columnVec = | |||
8 | 8 | ||
6 | 6 | ||
4 | 4 | ||
</pre><pre class="oct-code">mat = [8 6 4; 2 0 -2]</pre><pre class="oct-code-output">mat = | </pre> | ||
<pre class="oct-code">mat = [8 6 4; 2 0 -2]</pre> | |||
<pre class="oct-code-output">mat = | |||
8 6 4 | 8 6 4 | ||
2 0 -2 | 2 0 -2 | ||
</pre><pre class="oct-code">size(mat)</pre><pre class="oct-code-output">ans = | </pre> | ||
<pre class="oct-code">size(mat)</pre> | |||
<pre class="oct-code-output">ans = | |||
2 3 | 2 3 | ||
</pre> | </pre> | ||
<pre class="oct-code">length(rowVec)</pre> | |||
<pre class="oct-code-output">ans = 3</pre> | |||
Line 68: | Line 83: | ||
Many common linear algebra operations are simple to program using Octave’s | Many common linear algebra operations are simple to program using Octave’s | ||
matrix syntax. Read more | matrix syntax. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Linear-Algebra.html about linear algebra]. | |||
<pre class="oct-code">columnVec * rowVec</pre> | |||
<pre class="oct-code-output">ans = | |||
64 48 32 | 64 48 32 | ||
48 36 24 | 48 36 24 | ||
32 24 16 | 32 24 16 | ||
</pre><pre class="oct-code">rowVec * columnVec</pre><pre class="oct-code-output">ans = 116 | </pre> | ||
</pre><pre class="oct-code">columnVec | |||
<pre class="oct-code">rowVec * columnVec</pre> | |||
<pre class="oct-code-output">ans = 116</pre> | |||
<pre class="oct-code">columnVec'</pre> | |||
<pre class="oct-code-output">ans = | |||
8 6 4 | 8 6 4 | ||
</pre> | </pre> | ||
Line 83: | Line 106: | ||
Octave is 1-indexed. Matrix elements are accessed as | Octave is 1-indexed. Matrix elements are accessed as | ||
<code>matrix(rowNum, columnNum)</code>. Read more | <code>matrix(rowNum, columnNum)</code>. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Index-Expressions.html about accessing elements]. | |||
</pre> | |||
<pre class="oct-code">mat(2,3)</pre> | |||
<pre class="oct-code-output">ans = -2</pre> | |||
Line 92: | Line 117: | ||
Octave supports <code>for</code> and <code>while</code> loops, as well as other control flow | Octave supports <code>for</code> and <code>while</code> loops, as well as other control flow | ||
structures. Read more | structures. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Statements.html about control flow]. | |||
<pre class="oct-code">x = zeros (50,1); | |||
for i = 1:2:100 # iterate from 1 to 100 with step size 2 | |||
x(i) = i^2; | x(i) = i^2; | ||
endfor | |||
y = zeros (50,1); | y = zeros (50,1); | ||
k = 1; | k = 1; | ||
step = 2; | step = 2; | ||
while (k <= (100-step)) | |||
y(i) = k^2; | y(i) = k^2; | ||
k = k + step; | k = k + step; | ||
endwhile</pre> | |||
Line 112: | Line 139: | ||
operators <code>*</code>, <code>/</code>, and <code>^</code> all support element-wise operations writing | operators <code>*</code>, <code>/</code>, and <code>^</code> all support element-wise operations writing | ||
a dot <code>.</code> before the operators. Many other functions operate element-wise | a dot <code>.</code> before the operators. Many other functions operate element-wise | ||
by default ( | by default ([https://www.gnu.org/software/octave/doc/interpreter/XREFsin.html sin], <code>+</code>, <code>-</code>, etc.). Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Vectorization-and-Faster-Code-Execution.html about vectorization]. | |||
x = i.^2; | |||
y = x + 9; | <pre class="oct-code">i = 1:2:100; # create an array with 50-elements | ||
z = y./i; | x = i.^2; # each element is squared | ||
w = sin (i / 10); | 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 | |||
</pre> | |||
Line 124: | Line 153: | ||
= Plotting = | = Plotting = | ||
The function | The function [https://www.gnu.org/software/octave/doc/interpreter/XREFplot.html plot] can be called with vector arguments to | ||
create 2D line and scatter plots. Read more | create 2D line and scatter plots. Read more | ||
[https://www.gnu.org/software/octave/doc/interpreter/Two_002dDimensional-Plots.html about plotting]. | |||
<pre class="oct-code">plot (i/10, w); | |||
title (<span class="string">'w = sin(i/10)'</span>); | title (<span class="string">'w = sin(i/10)'</span>); | ||
xlabel (<span class="string">'i ÷ 10'</span>); | xlabel (<span class="string">'i ÷ 10'</span>); | ||
ylabel (<span class="string">'w'</span>);</pre> | ylabel (<span class="string">'w'</span>);</pre> | ||
<img src="octave_basics-1.png" alt="octave_basics-1.png"> | |||
Line 136: | Line 169: | ||
Strings are simply arrays of characters. Strings can be composed using | Strings are simply arrays of characters. Strings can be composed using | ||
C-style formatting with | C-style formatting with [https://www.gnu.org/software/octave/doc/interpreter/XREFsprintf.html sprintf] or | ||
[https://www.gnu.org/software/octave/doc/interpreter/XREFfprintf.html fprintf]. Read more | |||
[https://www.gnu.org/software/octave/doc/interpreter/Strings.html about strings]. | |||
<pre class="oct-code">firstString = <span class="string">"hello world"</span>; | |||
secondString = <span class="string">"!"</span>; | secondString = <span class="string">"!"</span>; | ||
[firstString, secondString] <span class="comment"># concatenate both strings</span> | [firstString, secondString] <span class="comment"># concatenate both strings</span> | ||
Line 150: | Line 185: | ||
Conditional statements can be used to create branching logic in your code. | Conditional statements can be used to create branching logic in your code. | ||
Read more | Read more [https://www.gnu.org/software/octave/doc/interpreter/The-if-Statement.html in the manual]. | ||
<pre class="oct-code"><span class="comment"># Print 'Foo' if divisible by 7,</span> | |||
<span class="comment"># 'Fizz' if divisible by 3,</span> | <span class="comment"># 'Fizz' if divisible by 3,</span> | ||
<span class="comment"># 'Buzz' if divisible by 5,</span> | <span class="comment"># 'Buzz' if divisible by 5,</span> | ||
Line 168: | Line 204: | ||
<span class="keyword">endif</span> | <span class="keyword">endif</span> | ||
fprintf(<span class="string">"i=%g: %s \n"</span>, i, outputString); | fprintf(<span class="string">"i=%g: %s \n"</span>, i, outputString); | ||
<span class="keyword">endfor</span></pre><pre class="oct-code-output">i=1: | <span class="keyword">endfor</span></pre> | ||
<pre class="oct-code-output">i=1: | |||
i=2: | i=2: | ||
i=3: Fizz | i=3: Fizz | ||
Line 194: | Line 232: | ||
= Getting Help = | = Getting Help = | ||
The | The [https://www.gnu.org/software/octave/doc/interpreter/XREFhelp.html help] and [https://www.gnu.org/software/octave/doc/interpreter/XREFdoc.html doc] commands can be invoked at the | ||
Octave prompt to print documentation for any function. | Octave prompt to print documentation for any function. | ||
<pre class="pre-code">help plot | |||
doc plot</pre> | doc plot</pre> | ||
Line 203: | Line 243: | ||
Community-developed packages can be added from the | Community-developed packages can be added from the | ||
[http://octave.sourceforge.net/index.html Octave Forge] website to extend | |||
the functionality of Octave’s core library. (Matlab users: Forge packages | the functionality of Octave’s core library. (Matlab users: Forge packages | ||
act similarly to Matlab’s toolboxes.) The | act similarly to Matlab’s toolboxes.) The [https://www.gnu.org/software/octave/doc/interpreter/XREFpkg.html pkg] command is used | ||
to manage these packages. For example, to use the image processing library | to manage these packages. For example, to use the image processing library | ||
from the Forge, use: | from the Forge, use: | ||
<pre class="pre-code">pkg install -forge image <span class="comment"># install package</span> | |||
pkg load image <span class="comment"># load new functions into workspace</span> | pkg load image <span class="comment"># load new functions into workspace</span> | ||
</pre> | </pre> | ||
[https://www.gnu.org/software/octave/doc/interpreter/Packages.html Read more about packages]. | |||
[[Category:Tutorials]] | [[Category:Tutorials]] |