Buy it now. Add to basket. Davis Paperback, Be the first to write a review About this product. All listings for this product Buy it now Buy it now. Any condition Any condition. See all Additional Product Features Author s. Timothy A. Show more Show less. No ratings or reviews yet. Be the first to write a review. You may also like. Pruden rated it it was amazing Mar 31, James Wright rated it it was amazing Jun 10, Kinan Arous rated it really liked it Aug 12, Nicholle rated it did not like it Apr 01, Emma C.

Ongaro rated it did not like it Aug 16, Rod rated it really liked it Jul 11, Daniel Jackson rated it really liked it Aug 17, Stephen Dufreche rated it it was amazing May 06, Jeremy rated it liked it Oct 05, Ben rated it really liked it Jul 15, Shashank Kumar rated it it was amazing Mar 21, John rated it liked it Apr 11, Jonathanrb rated it liked it Feb 18, Kevin Curran rated it it was amazing Jan 23, Elnagdi elnagdi added it Jul 20, Eugene added it Apr 22, Ari Widodo marked it as to-read Mar 03, Mike added it Jun 11, Patrick marked it as to-read Aug 13, Bolbol Falcon marked it as to-read Feb 24, Joseph Merkel added it Apr 09, Sergio marked it as to-read Apr 14, Anthony marked it as to-read Jul 05, Abel marked it as to-read Sep 07, Alexander Holik added it Oct 04, Rahul Gupta marked it as to-read Dec 17, David marked it as to-read Dec 29, Ghoysalarani marked it as to-read Jan 06, Select one from the list, or keep typing to narrow down the selection.

Type e and then tab to narrow down the selection to zeros. You can also use that menu to change your keyboard shortcuts. Try this. It keeps track of more digits than this, but only displays 5 digits by default. To see more digits, or to display numbers in different formats, try these commands: format format format format format short long short g long g rat fixed point, 5 digits fixed point, 15 digits fixed or scientific notation, 5 digits fixed or scientific notation, 15 digits approximate integer ratio format short is the default.

Once invoked, the chosen format remains in effect until changed. To compute results in more digits you need to use variable precision arithmetic Section The command format compact suppresses most blank lines, allowing more information to be placed on the screen. The command format loose returns to the non-compact format.

These two commands are independent of the other format commands. You can pause the output in the Command Window with the more on command. Type more off to turn this feature off. You can re-execute one more commands from this window by double-clicking or dragging the command s into the Command Window. For more options, select and right-click on a line of the Command Window. The file should consist of a rectangular array of just the numeric matrix entries.

Use a text editor to create a file in your current folder called mymatrix. The file extension. You can use the menus and buttons in the Current Folder window to peruse your files, or you can use commands typed in the Command Window. The command pwd returns the name of the current folder, and cd changes the current folder.

Use cd.. The command dir lists the contents of the current folder, whereas the command what lists only the MATLAB-specific files in the folder, grouped by file type. The Current Folder window can create and manage zip files. Right-click the mymatrix. You can also create a zip file with multiple input files by selecting a set of files first. Double-clicking on the new mymatrix. Delete your original mymatrix. The name of the mymatrix. The Current Folder window includes a suite of useful code development tools for writing your own M-files.

At this point in the book, you have yet to write your own M-files, so these tools are fully described later on Chapter The classes you will use most are rectangular numerical arrays with possibly complex entries, and possibly sparse. An array of this type is called a matrix. A matrix with only one row or one column is called a vector row vectors and column vectors behave differently; they are more than mere one-dimensional arrays. A 1-by-1 matrix is called a scalar. They can be entered as an explicit list of elements as you did for matrix A , generated by statements and functions as you did for matrix C , created in a file with your favorite text editor, or loaded from external data files or applications.

You can also write your own functions M-files and mexFunctions in C, Fortran, or Java that create and operate on matrices. All the matrices and other variables that you create, except those internal to M-files, are shown in your Workspace window. Double-clicking on a variable in the Workspace window pulls up the Variable Editor Section 2.

The command whos lists the variables currently in the workspace. A variable or function can be cleared from the workspace with the command clear variablename or by right-clicking the variable in the Workspace window and selecting Delete. The command clear alone clears all variables from the workspace. However, invoking the command save before exiting writes all variables to a binary file named matlab. Commands save and load take file names and variable names as optional arguments.

Type doc save and doc load, to bring up the documentation on these functions in the Help window described in the next section. Try typing the commands save, clear, and then load, and watch what happens in the Workspace window after each command. The Help window has most of the features you would see in any web browser clickable links, a back button, and a search tool, for example. These are handy to download, read, and search when you are not running MATLAB, but you might hesitate to actually print them all out they total nearly 12, pages in length. You can also use the help command, typed in the Command Window.

For example, the command help eig tells about the eigenvalue function eig. See the list of functions in the Appendix for a brief summary of help for a function. The F1 key is a quick shortcut to getting help on a function. Inside the Command Window or Editor, after typing in a command, hit the F1 key.

The Help window for that function will pop up. Selecting a function brings up a short description of the eig function, with a link for more help. When you type a function name in the Command Window or in the Editor, followed by the left parenthesis, a small popup appears. The popup shows you the possible inputs to the function, and a link for more help. Some are videos, and some are interactive. Most demos are M-files that run step-by-step in the Command Window. Users can rate the files, which helps you weed out the mediocre ones a bad solution to a problem is worse than no solution at all.

### Account Options

With the File Exchange window, you can search for files from the File Exchange, download them, install them, and try them out. If you do not have a MathWorks Account, you will be asked to create one. Click on the green arrow to the right, download it, then type seashell in the Command Window. Click on an entry in C and change it, and try changing the size of C. Go back to the Command Window and type: C and you will see your new array C. For example, A 2,3 denotes the entry in the second row, third column of matrix A.

Higher dimensional arrays are similarly indexed. An array accepts positive integers as indices. You can also use logical indices, discussed in Section 5. An array with two or more dimensions can be indexed as if it were a one-dimensional vector. This feature is most often used with the find function see Sections 5.

If the sizes of the matrices are incompatible for the matrix operation, an error message will result, except in the case of scalar-matrix operations. The scalar 1 is expanded in size to match the size of the matrix A. You can also expand non-scalars with the bsxfun function see Section 5.

Not all scalar-matrix operations are valid. If A is not square, the under- or over-determined system is solved in the least squares sense. Backslash is a very powerful general-purpose method for solving linear systems. Depending on the matrix, it selects forward or back substitution for triangular matrices or permuted triangular matrices , Cholesky factorization for symmetric matrices, LU factorization for square matrices, or QR factorization for rectangular matrices.

It has a special solver for Hessenberg matrices. It can also exploit sparsity, with either sparse versions of the above list, or special-case solvers when the sparse matrix is diagonal, tridiagonal, or banded. It selects the best method automatically sometimes trying one method and then another if the first method fails. It can be much faster to use the linsolve function described in Section 5. For example, either: [1 2 3 4]. When applied to scalars, the result is a scalar. When applied to matrices of the same size, the result is a logical matrix of ones and zeros giving the value of the expression between corresponding entries.

## Melvil Decimal System: 518.0

You can also compare elements of a matrix with a scalar. This is useful for partially-defined functions. Suppose f x returns a logical value but generates an error if x is zero. The short-circuit or acts similarly. It does not evaluate the right expression if the left is true. You can use i and j as variables and overwrite their values, since they are also commonly used as loop indices this is why the example above starts with clear i. The simplest thing to do is to always use the constants 1i or 1j, which cannot be reassigned and are always equal to the imaginary unit.

See Section Strings, numeric matrices, and all other data types can be displayed with the function disp. Try disp S and disp B. Cell arrays avoid this problem see Section 8. Use strcmp and strcmpi to compare strings for equality. To convert a number displayed a string into a number, use str2double, str2num, or sscanf. The str2num function can extract multiple numbers from a single string, but it it evaluates the string as if it were a MATLAB expression.

The string might include calls to a function, which may cause unintended side effects. The sscanf function provides more more control over how numbers are parsed from strings. See also fscanf for reading numbers from text files. Colon notation which is used to both generate vectors and reference submatrices and subscripting by integral vectors are keys to efficient manipulation of these objects.

Creative use of these features minimizes the use of loops which can slow down MATLAB and makes code simple and readable. Make a special effort to become familiar with them. For example, These vectors are commonly used in for loops, described in Section 7. Be careful how you mix the colon operator with other operators. Compare with Thus, A ,3 is the column vector consisting of the first four entries of the third column of A. A colon by itself denotes an entire row or column: A :,3 is the third column of A, and A ,: is the first four rows of A. Arbitrary integral vectors can be used as subscripts.

A :,[2 4] is a matrix with two columns: columns 2 and 4 of A. The entire altered matrix A is displayed because the statement is not terminated with a semicolon. Submatrix operations are a convenient way to perform many useful computations. You can also assign a scalar to all entries of a submatrix. You have already seen some of them, such as zeros, rand, and sqrt. This chapter describes the more common matrix manipulation functions. For a more complete list, see the Appendix p.

Use randn for random numbers with normal distribution, and randi for random integers. All three functions rand, randn, and randi use the same underlying generator. If A is a matrix, then zeros size A produces a matrix of zeros having the same size as A. The ones function is the same as zeros, except that it returns a matrix of all ones. For a regular scalar, vector, or matrix, size A returns a vector of length 2 with the number of rows and columns of A For a scalar x, size x is [1 1].

With two outputs or more the dimensions of A are returned in the two or more scalars. A matrix A is empty if min size A is zero; isempty A is true for an empty matrix A. If x is a vector, diag x is the diagonal matrix with x down the diagonal; if A is a matrix, then diag A is a vector consisting of the diagonal of A. Try creating this 5-by-5 matrix. Matrices can also be generated with a for loop see Section 7. Many have interesting eigenvalue or singular value properties, provide interesting counter-examples, or are difficult matrices for various linear algebraic methods.

Most of these functions perform basic statistical computations std computes the standard deviation and prod computes the product of the elements in the vector, for example. The primary functions are: max min sum prod median mean any all sort std var mode The maximum entry in a matrix A is given by max max A rather than max A.

The any and all functions are discussed in Section 7. Square brackets are used to the left of the equal sign to list the outputs. They look at the matrix and try to pick the best method. If A is symmetric and positive definite, one explicit solution method is to perform a Cholesky factorization, followed by two solves with triangular matrices.

Try this: opts. All opts fields are either true or false. Not all combinations are supported type doc linsolve for a list. This example uses a struct called opts. Structs are covered in detail in Section 8. This is often used in conjunction with relational operators. Suppose you want a vector y that consists of all the values in x greater than 1. Getting the values of A that are larger than.

Think of one-dimensional indexing starting at A 1,1 , which is the same as A 1 , and then counting down the first column. So A m,1 is the same as A m. On the right of the equal sign, A k returns the values given by the indices in k. The result is the same size and shape as k. If k is a matrix or row vector, it is converted into the single column k :. The resulting column vector can then be reshaped into a matrix with different dimensions using reshape.

Try this example. You can index into an array using a list of indices such as those from find , or you can index into it with a logical array directly. Here is the same example as the first one in Section 5. S can be the same size as A, or smaller. Unlike one-dimensional indexing, the result x is always a vector and never a matrix.

If S is smaller than A, S : gets padded with zeros to give it the same number of entries as A.

S cannot be larger than A. S is an array of type double, not logical, so A S fails. For example, subtracting the mean of each column from a matrix is a common operation in statistics. The repmat function is one approach for solving this problem. See Sections 3. The dimensions of A and B must either match, or either can be equal to one a singleton dimension. A singleton dimension in one matrix is expanded implicitly replicating the matrix to match a non-singleton dimension in the other matrix. This example subtracts the mean of A from each column. All the columns of the new matrix C have a mean of zero or nearly so, ignoring floating-point roundoff.

Subtracting this from A subtracts the mean of column k from A :,k , for each column k. You must add to the name to create a function handle, which can then be passed to bsxfun. Here are three ways of doing it. The first uses bsxfun, and the other two use backslash with a full and sparse scaling matrix D, respectively. The advantage of bsxfun is that it can handle many kinds of matrix operations that backslash cannot handle. Sparse matrices are discussed in Chapter For solving more complex problems, you need to create a sequence of statements stored in a file so that you can easily edit and re-use them.

These are called M-files because they must have the file type. M-files are usually created using with the M-file Editor or your favorite text editor. There are two types of M-files: script files and function files. In this exercise, you will incrementally develop and debug a script and then a function for making a matrix diagonally dominant. Save the file as ddom. See the web page for this book for the M-files and MEX-files used in this book. You might find it convenient to dock the Editor window click because in the exercise below you will be going back and forth between the Editor window and the Command Window.

More discussion on some of the advanced features of the Editor is found in Section The next section describes how to debug your code via breakpoints in the Editor. Typing ddom in the Command Window causes the statements in the script file ddom. Variables in a script file refer to variables in the main workspace, so changing them changes your workspace variables. It seems to work; the matrix A is now diagonally dominant. What happened? Look at f in the Workspace window or double-click on it to open f for editing ; it is a column vector with the values [-1 ; 0].

Change the first line of ddom. This is a shortcut to typing ddom in the Command Window. The matrix A is now diagonally dominant. Run the script again, though, and you will see that A is modified even if it is already diagonally dominant. Fix this by modifying only those rows that violate diagonal dominance. Set A to [1 -2;-1 1] again and modify ddom. This time the matrix does not change. To fix it, try another debugging method: setting breakpoints. A breakpoint causes the script to pause, and allows you to enter commands in the Command Window, while the script is paused it acts just like the keyboard command.

You can also set and clear breakpoints by clicking on the red dots or dashes in this column. Execution of the script has paused, just before line 5 is executed. Look at the variables A and f. Since the diagonal is negative, and f is an absolute value, we should subtract f from A to preserve the sign. The script seems to work, but it modifies A more than is needed.

It is useful in specifying tolerances for convergence of iterative processes and in problems like this one. Variables in a function file are local by default. A variable can, however, be declared global see doc global. Use global variables with caution; they can be a symptom of bad program design and can lead to hard-to-debug code.

Convert your ddom. To see the difference between global and local variables as you do this exercise, type clear. The matrix C in the workspace does not change, although a copy of it, local to the ddom function, called A, is modified as the function executes. Note that the other variables, a, d, f, i, k and s no longer appear in your main workspace. Neither do A and B. These are local to the ddom function. The first line of the function declares the function name, input arguments, and output arguments; without this line the file would be a script file.

Your workspace has only the matrices C and D.

- MATLAB Primer (8th ed.).
- MATLAB Primer, Eighth Edition - 香港書城網上書店 Hong Kong Book City.
- My Wishlist.
- MATLAB Primer (8th ed.);
- Account Options;

An optional return statement causes the function to finish and return its outputs this happens implicitly if execution reaches the end of the M-file. An M-file can reference other M-files, including itself recursively. For example, it would be useful to provide the caller of the ddom function some control over how strong the diagonal should be and to provide more results, such as the list of rows the variable i that violated diagonal dominance.

Single assignments can also be made with a function having multiple output arguments. The variables nargin and nargout can be queried to determine the number of inputs and outputs present. For example, we could use a default tolerance if tol is not present. Section 7. Use varargin to create a function that can accept an arbitrary number of inputs.

Include a parameter with the exact name varargin as the last input parameter. Any extra arguments are collected in a cell array with the name varargin see Section 8. Try creating this simple function. In the latter case, c is set to pi, the first element in varargin and the third input to f. Similarly, varargout creates a function with a variable number of outputs. Add varargout as the last output parameter to your function. For a simple yet powerful example of varargin and varargout, see the built-in deal function enter type deal in the Command Window.

To ignore arguments that appear at the end of the list of outputs, simply remove them from the list. The second output i is ignored. The first contiguous comment lines are used to document the M-file.

## MATLAB Primer by Timothy A. Davis

Always include this in your functions. Since you have modified the function to add new inputs and outputs, edit your function to describe the variables i and tol, and state the default value of tol. Next, type help ddom or doc ddom. Block comments are useful for lengthy comments or for disabling code that you might want to use later. Block comments in an M-file are not printed by the help or doc commands.

This type of cell has nothing to do with cell arrays discussed in Chapter 8 , but defines a section of code in an M-file. Cells can be executed by themselves, and cell publishing see Chapter 23 creates reports whose sections are defined by the cells of an M-file. This command can also be used to add or delete directories from the search path.

See doc path. The command which locates functions and files on the path. For example, type which hilb. Indenting the statements of a loop or conditional statement is optional, but it helps readability to follow a standard convention. You can type a control flow statement in the Command Window, but this can be difficult to manage. Using an M-file is the easiest way to try these examples. Try them. The vector x grows in size at each iteration. The last H displays the final result. The semicolon on the inner statement is essential to suppress the display of unwanted intermediate results.

If you leave off the semicolon, you will see that H grows in size as the computation proceeds. This can be slow if m and n are large. Type the command doc hilb and type hilb to see a more efficient way to produce a square Hilbert matrix. Here is the counterpart of the one-dimensional indexing exercise from pages 29 and It adds 99 to each entry of the matrix that is larger than. It is slower than using find or logical indexing. The index variable consecutively assumes the value of each column of the expression. Each iteration of the for loop assigns a successive column of H to the variable c.

It works differently in a for loop. Here is an example for both. It prints the odd integers from 1 to 7 by skipping over the even iterations and then terminates the loop when i is 7. If the else part is used, it must come last. The elseif part is tested only when the if test is false.

The else part is executed only when the if test and any elseif tests are all false. If you have one expression that you want to compare against several others, then a switch statement can be more concise than the corresponding if statement. Here is the general format: switch expression case expression2 statements otherwise statements end The case statement can be repeated as many times as you want.

The otherwise clause is optional. The expression in the switch statement must be a scalar or a string.

## MA302 Spring 2018: Links

It is compared with each case expression expression2, above , and the statements of the first case that matches are selected and executed. If nothing matches, the otherwise statements are executed. Scalars and strings can be mixed together. The case expression can be a cell array discussed in Section 8. The switch expression is compared with each of the expressions in the list, and if any one of them matches, the corresponding statements are executed.

Try the example on the next page. The gallery and why functions have more examples of switch statements. See help switch or doc switch for more examples. Files that you try to read might not exist. These are just a few examples. It can be very difficult to catch all these cases before trying an operation that might fail. Alternatively, you might want to try a computation optimistically, and then take corrective action if something goes wrong.

If an error occurs, those statements are terminated, and the second block of statements is executed. Here is a simple example. If the MAT-file is not found, a default matrix is used instead. This variable keeps a record of what the error is. If the error-handling code cannot recover, you can use rethrow ME to reissue the error, which acts as if the error was not caught in the first place.

See doc try for more information. The functions any and all can be used creatively to reduce matrix expressions to vectors or scalars. Like most vector functions, any and all can be applied to dimensions of a matrix other than the columns.

The isequal function works on any kind of variables, such as strings of different lengths, structs, or cell arrays. Structs and cell arrays are discussed in the next chapter. Typing Ctrl-C stops a runaway display or computation. They cannot be used if you want to store a number in one position and a string in another. This is where cell arrays, structs, and objects are useful. Object-oriented programming is a lengthy topic discussed in its own chapter Chapter 9. A cell array of strings can contain strings of different lengths, or any variable at all — including another cell array.

Use a struct to create a data structure where each part has its own unique name. Try: clear z z. The clear z statement in the example above makes sure z does not already exist. If z already exists and is a struct, then the old struct z is augmented with the new fields, which might not be what you want. You can create an array of structs or a struct containing an array. The next example causes z to become a 2-by-3 array of structs, where z 1,1 is the electron above.

The other entries are empty. Every entry in the struct z has the same three fields, but some are empty since they have not been assigned to anything. Note that z 1,1. Structs are very flexible data structures for representing all kinds of data. The struct command builds a struct array all at once, using one cell array for each field in the struct. This next one-line statement creates the same struct z. Since it is rather long, try it in your own M-file script, rather than trying to type it in the Command Window. If you type z 1,1. Structs are a nice way to keep together all the variables and arrays that define a single problem.

Their results are shown to the right. Set operations always return their results with sorted entries and with no duplicates. Note that A includes a duplicate entry, but union A,B removes it. A matrix represents a set with each row being a single element. Character arrays represent sets of strings, all of the same length. For sets of strings with different lengths, use a cell array of strings.

The default data type is double, a bit IEEE floating-point number. The single type is a bit IEEE floating-point number which should be used only if you are desperate for memory. An integer value stored as a double is nicknamed a flint. Integer types are typically needed for special cases such as signal processing, image processing, encryption, and bit string manipulation.

Integers come in signed and unsigned flavors, and in sizes of 8, 16, 32, and 64 bits. Integer arithmetic is not modular, but saturates on overflow. See doc int8, doc uint8, and doc single for more information. A sparse matrix is not actually its own data type, but an attribute of the double and logical matrix types. Sparse matrices are allowed as arguments for most, but not all, MATLAB operators and functions where a normal matrix is allowed. Multidimensional arrays may also be built up using cat short for concatenation. The first input of cat specifies the dimension along which the matrices are to be concatenated, and the next inputs are the matrices to concatenate.

Try this example, which creates a 3-byby-2 matrix C. Suppose you want to set z 1,2. You created an entirely new field in the struct, rather than modifying the existing one. Worse yet, every time you pass z to a function, a robust function would need to make sure all the required fields are present. What should it do with fields such as z.

Particle that it does not recognize? And there is no way to get a list of all functions that can take this struct z as input, or produce one on output. The classdef file specifies everything you can do with or to the object these are called methods.