Difference between revisions of "Octave"
(→Plotting Multiple Histograms on Same Graph: Removed unnecessary code) |
(Re-organize to multiple pages) |
||
Line 1: | Line 1: | ||
== Octave == | == Octave == | ||
GNU Octave is software featuring a high-level programming language, primarily intended for numerical computations. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB.<ref>Gnu Octave. (2022, February, 10). In ''Wikipedia''. https://en.wikipedia.org/wiki/GNU_Octave</ref> | GNU Octave is software featuring a high-level programming language, primarily intended for numerical computations. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB.<ref>Gnu Octave. (2022, February, 10). In ''Wikipedia''. https://en.wikipedia.org/wiki/GNU_Octave</ref> | ||
{{MerlinMultipageExperienceSubpages | |||
|Pages=Preparation;Graphing;Sombrero | |||
}} | |||
== Preparation == | == Preparation == |
Revision as of 13:41, 31 March 2022
Octave[edit]
GNU Octave is software featuring a high-level programming language, primarily intended for numerical computations. Octave helps in solving linear and nonlinear problems numerically, and for performing other numerical experiments using a language that is mostly compatible with MATLAB.[1]
Preparation[edit]
In this exercise, you'll be generating graphic files by using Octave. In order to view these files, you'll save them in a special directory called "~www" which must be created in your home directory. The following instructions will instruct you on how to create this directory.
Create a directory to be served by the web server. If the directory already exists, no error will occur.
amrit-gupta@codermerlin:~$ mkdir --parents ~/www
Enter the directory.
amrit-gupta@codermerlin:~$ cd ~/www
Set the permissions so that the files can be accessed by the web server. If permission errors are encountered, re-execute this command.
amrit-gupta@codermerlin:~$ chmod -R a+rX ~/www
Graphing[edit]
Octave may be started by typing 'octave' in the shell. It's easiest to perform this in your www directory so the files that you create will be saved there.
liang-xue@codermerlin:~$ cd ~/www
liang-xue@codermerlin:~$ octave
You'll know you're in Octave when you see the Octave prompt.
octave:1>
In order to enable graphics plotting, execute the following command:
octave:1> graphics_toolkit("gnuplot")
We'll begin with a 3-D example to demonstrate the power of Octave and the ease with which complex graphs can be created.
Examples[edit]
3-D Sombrero Plot[edit]
octave:2> tx = ty = linspace (-8, 8, 41);
octave:3> [xx, yy] = meshgrid (tx, ty);
octave:4> r = sqrt (xx .^ 2 + yy .^ 2) + eps;
octave:5> tz = sin (r) ./ r;
octave:6> mesh (tx, ty, tz);
octave:7> xlabel ("tx");
octave:8> ylabel ("ty");
octave:9> zlabel ("tz");
octave:10> title ("3-D Sombrero Plot");
We can now print the plot to a file with:
octave:11> print -dpng sombrero.png
It may take a few seconds to produce the file; be patient.
It's necessary to adjust the file's permissions to enable web server access. This may easily be performed from within octave using the following command:
octave:12> system("chmod -R a+rX ~/www")
When the prompt returns, the file may be viewed in a browser. Every user has a personal URL. Your file may be viewed here: You must be logged in to view your personal URL.
Random Numbers[edit]
We can produce results similar to those of throwing a six-sided die by using the rand function which returns a random value in the interval (0, 1).
octave:13> rand
Try executing this command several times and observe the results. In order to obtain integer values in the range from 1 to 6 we'll multiply the result of rand by 6, add 1, and then take the floor of this result.
octave:16> floor(6*rand + 1)
Try executing this command several times and observe the results.
Array of Random Numbers[edit]
An array of 10 random throws of a six-sided die can be produced as follows.
octave:17> A = floor(6 * rand(10, 1) + 1)
Plotting a Histogram[edit]
Histograms can easily be plotted from the array. The second argument [1 2 3 4 5 6] provides the midpoints of the 'bins' for our histogram.
octave:18> hist(A, [1 2 3 4 5 6]);
Plotting Multiple Histograms on Same Graph[edit]
# Plots three histograms of random data from six-sided die
# Histograms vary in their population
graphics_toolkit("gnuplot")
# Generate three random data sets of six-sided die throws
A = floor(6 * rand(10000, 1) + 1)
B = floor(6 * rand(100, 1) + 1)
C = floor(6 * rand(10, 1) + 1)
# Plot data as histograms
hold on
hist(A, [1, 2, 3, 4, 5, 6], "facecolor", "cyan");
hist(B, [1, 2, 3, 4, 5, 6], "facecolor", "magenta");
hist(C, [1, 2, 3, 4, 5, 6], "facecolor", "green");
# Use a logarithmic scale
set(gca, 'yscale', 'log');
# Add Titles and Legends
grid on
title("Histogram Plots: Six-sided Die Simulations");
xlabel("Six-sided Die Roll")
ylabel("Frequency of Occurrence (log scale)")
legend ("10 thousand samples", "100 samples", "10 samples", "location", "northeastoutside");
# Print to a file
print -dpng histogram.png
Reading from a Remote URL[edit]
We can read the contents of a remote URL using the following command:
octave:17> s = urlread ("https://www.codermerlin.com/users/john-williams/sample.csv");
Reading from a String[edit]
We can read the contents of a string using the following command, interpreting each value read as a Double:
octave:18> A = strread(s, "%n");
Appending from a String[edit]
We can append the contents of a string to an existing array using the following command:
octave:18> A = [A; strread(s, "%n")];
References[edit]
- ↑ Gnu Octave. (2022, February, 10). In Wikipedia. https://en.wikipedia.org/wiki/GNU_Octave