Handling and Plotting data in Octave / MATLAB

What’s in memory

To quickly view the variables in memory, use the who command. Use whos for detailed view

>> who
Variables in the current scope:
ans       ar1       heat      readings  vec       vec1      vec44     vec45     x         y         z

>> whos
Variables in the current scope:
   Attr Name          Size                     Bytes  Class
   ==== ====          ====                     =====  =====
        ans           1x78                        78  char
        ar1           1x4                         32  double
        heat          1x1                          8  double
        readings      4x4                        128  double
        vec           1x16                        24  double
        vec1          1x4                         32  double
        vec44         4x4                        128  double
        vec45         4x5                        160  double
        x             1x21                        24  double
        y             1x21                       168  double
        z             1x21                       168  double

Total is 218 elements using 950 bytes

To delete a variable from memory, use the clear <variable name> command. Just using the clear command will remove all variables.

Reading data files

Read datasets with load command. >> load('ex1data1.txt') A variable with the name of the file is created in memory. You can use array slicing, dicing to move a part of this data into a new variable.

>> load('ex1data1.txt');
>> subset = ex1data1(1:10,:)
subset =
    6.1101   17.5920
    5.5277    9.1302
    8.5186   13.6620
    7.0032   11.8540
    5.8598    6.8233
    8.3829   11.8860
    7.4764    4.3483
    8.5781   12.0000
    6.4862    6.5987
    5.0546    3.8166

Saving data to disk

Use save <filename.extn> <variable> <-options> to save a variable to disk.

>> save 'subset.mat' subset

You can load this back into memory using the load command: load('subset.mat'). This time, since it is a mat file, Octave will load it with the original variable name.

To save data in a human readable form, use save <filename.txt> <variable> -ascii.

Plotting

Most 2D plots can be accomplished using plot(<arr1>, <arr2>, 'srt:options') function.

Line plots

plot(x,y); % will plot in a new window

We can customize the appearance of ticks and line by passing them as a string. For instance, r:* will make lines in red, * for points and : for dotted lines.

You can also customize the title, labels, legend as shown:

>> plot(x,y);
>> xlabel('time[x]');
>> ylabel('y=x^2');
>> legend('y(x)')
>> title('Function of time')

Overlaying plots

To overlay multiple plots on the same frame, use hold on command.

>> z = x.^3;
>> plot(x,y, 'r:o')
>> hold on
>> plot(x,z, 'g--*')

You can also plot multiple plots in the same command as plot(x,y, x,z) which will overlay both y and z on the same plot window.

To close the current figure, call the close command.

Printing plots to disk

To print to disk, use the print command as print -dpng 'myplot.png'. This will print the current plot to disk.

Multiple plot windows

Use the figure(n) command to create new plot windows:

>> figure(1); plot(x,y1);
>> figure(2); plot(y1,y2);

will open 2 plot windows, one for each plot command.

Subplots

Use the subplot(nrows, ncols, current_cell) command to create and activate a plot window:

>> subplot(1,2,1);
>> plot(x,y1);
>> axis([0,1]);  % Sets axis limits. Syntax is axis([xmin, xmax, ymin, ymax])
>> subplot(1,2,2);
>> plot(x,y2);
>> legend('y2');

which produces:

Visualizing matrices as images

To quickly ‘see’ a matrix as a color coded image, use imagesc:

>> x=randn(900,1);  % produces a standard normal dist, mean=0
>> size(x)
ans =
   900     1
>> x2d= reshape(x,30,30); % turns this vector to a 2d matrix
>> imagesc(x2d);  % turns this matrix to an image
>> colorbar;  % adds a colorbar legend