# MATLAB Tutorial: Part 2

**MATLAB Tutorial: Part 2**

**14. Managing M-files.**
The !-feature allows for editing or printing to be done without having to exit MATLAB. Using the command *!ed* will let the named file be edited and then returned to MATLAB where you left off. Many commands control the working directory. *Pwd* returns the name of the present working directory. *Cd* changes the working directory. *Dir* or *ls* lists the contents of the working directory, but what lists only the M-files. Files named matlab are accessible from any directory. M-files have to be in a directory MATLAB can excess.

**15. Comparing efficiency of an algorithms: flops, tic and toc.**
The efficiency of an algorithm can be measured by the number of floating point operations (flops) performed and the elapsed time. The total number of flops performed is kept track of by the function *flops*. This number can be reset by the command *flops(0)*. *Tic* and *toc* are stopwatch times that can return the elapsed time. *Tic* starts the timer and *toc* returns the elapsed time.

**16. Output format.**
The output on display is controlled by a variety of format commands, but the computations are done in double precision.
*Format compact* suppresses most of the blank lines so more information can be added on the screen, while *format loose* returns the display back.

**17. Hardcopy.**
The *diary* command causes the next code written to be written on the name diskfile until the command *diary off* is given. After this is done the file can be edited and printed on the local system.

**18. Graphics.**
MATLAB can create planar plots of curves, 3-D plots of curves, 3-D mesh surface plots, and 3-D faceted surface plots.

**Planar plots.**
The command plot produces a liner x-y plot. Plot(x,y) will draw an x-y plot if the vectors x and y are the same length. There can be many different graphic figures, but only one at a time will be call “current.” The command *figure(1)* will make figure 1 the current figure if it was not before, and *gcf* will return the number of which figure is current. An example of a linear x-y plot is shown below.

- x = -1.5:.01:1.5; y = exp(-x.^2); plot(x,y)

*Fplot* is used to plot the graph of a function.
Plots can be made of parametrically defined curves as well.

- t=0:.001:2*pi; x=cos(3*t); y=sin(2*t); plotx,y)

All graphs can be given titles, labeled axes, and text within the graph.

- Title: graph title

- xlabel: x-axis label

- ylabel: y-axis label

- gtext: place text on graph using mouse

- text: place text at specified coordinates

Axes are auto-scaled, but this can be overwritten with the command *axis*. This command should always be given after the plot command. Multiple plots can also be displayed on a single graph.

- x = 0: .01:2*pi; y1 = sin(x); y2 = sin(2*x); y3 = sin(4*x); plot(x,y1,x,y2,x,y3)

This can also be done with the *hold* command. It freezes the current on screen graphics so other plots can be put on the same graph, but the axes may become rescaled. Colors and line types can be added to a plot as well. The code plot(x,y,’r--‘) shows a red dashed line.

**Graphics hardcopy**
The command *print* is the easiest way to send a high-resolution copy of the current graphics figure to the default printer. The *printopt* M-file identifies the default setting used by the *print* command. *Print filename* saves the figure to the filename given in the default format. If there is no extension in the filename then the default file format will be assigned. A file will be overwritten if the filename already exists. The option *–append* will append the current graphics figure into the existing file so more than one figure can be saved in each file. The command code is *print –append filename*. This command can be overwritten with the option –f3.

**3-D line plots.**
Plot3 makes a curve in three dimensions. If x, y, and z are defined vectors of the same size, then plot3(x,y,z) will create a 3-D curve passing through the coordinates of the respective elements. A zlabel can still be added to this plot.
The helix shown below was created using the code:

- t = .01: .01:20*pi; x = cos(t); y = sin(t); z = t.^3; plot3(x,y,z)

**3-D mesh and surface plots.**
A three dimensional wire mesh surface plot with the elements of matrix z is created with the command *mesh(z)*. The function *meshgrid* allows for a graph to be drawn over a rectangle by allowing matrices to be created. Surface plots are created using *surf(z)*.

z=e^{-x^2-y^2} can be drawn over the square [-2,2]x[-2,2] with the following codes:

- xx = -2: .2:2;

- yy = xx;

- [x,y] = meshgrid(xx,yy);

- z = exp(-x.^2 – y.^2);

- mesh(z)

*Surf(z)* of the same code is shown as well.

There are three different settings for the color shading of surfaces: faceted, interpolated, and flat. The command *shading* should be done after the *surf* command. Different color profiles can be produced by the command *colormap*.

**Handle Graphics.**
MATLAB contains many different graphic functions. The user is able to control almost all of the graphics allowing for detailed plots to be made.

**19. Sparse Matrix Computations.**
MATLAB provides the ability to save storage space, so larger problems can be solved, by only storing the nonzero elements of the matrix. Matlab has the storage mode full, the default, and sparse. The sparse matrix is stored as a linear array of its nonzero elements. The output of a matrix in sparse mode is a list of nonzero entries and their row and column indices. A matrix is sparse if any constituent block is sparse.