Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

INTRODUCTORY MATLAB TUTORIAL

Step 5: Plot

...

σx vs.

...

ri, Take 3: File Input/Output

Wiki Markup
Read in \[A\] from a File

Wiki Markup
Instead of specifying _\[A\]_ within the program, let's give the user the option of reading it in from a text file called, say, _input_data.txt_.

Wiki Markup
Create a text file called _input_data.txt_ in your working directory with the elements of _\[A\]_, each row being on a separate line:
Keep in mind that we have used whitespace to delimit
 !input_data.jpg!
Keep in mind that we have used whitespace to delimit (i.e. differentiate) the different numbers. We'll read in this data using the{_}dlmread_ command. Check the documentation on this command:

Help > Index (tab) > dlmread

...

A=dlmread('input_data.txt')

Wiki Markup
This will read in _\[A\]_ from the specified file. Let's test this at the command line before we add it to our program:
Check A in the Workspace. Note that each line in the text file is interpreted as a matrix
 !dlmread.jpg!
Check A in the Workspace. Note that each line in the text file is interpreted as a matrix row.

We'll create a new program called beam4.m starting from beam3.m. Select beam3.m in the Editor. Select

Editor > File > Save As

Enter beam4.m for filename. Confirm that you are editing beam4.m. Comment out the original A specification statement and replace it with the above statement using dlmread. Add a semi-colon at the end of the statement. Image Added
Save beam4.m. Run it from the command line. Image Added
Does your result look right?

Wiki Markup
Read in \[B\] from a File

Wiki Markup
Hey, if _\[A\]_ can be read in from a file, why not read _\[B\]_ from the same file?

Wiki Markup
Append the elements of _\[B\]_ to _input_data.txt_ and save the file:
Now we need to tell MATLAB
 !input_data2.jpg!
Now we need to tell MATLAB to:
1.

  1. Read in the first two rows and assign it to A.

...

  1. Read in the last two rows and assign it to B.

An additional complication is that A and B have different number of columns. To handle this mess, we turn to the following nugget from the dlmread documentation:

Wiki Markup
M = dlmread('filename', delimiter, range) reads the range specified by range = \[R1 C1 R2 C2\] where (R1,C1) is the upper left corner of the data to be read and (R2,C2) is the lower right corner. You can also specify the range using spreadsheet notation, as in range = 'A1..B7'.

Key point: MATLAB starts counting the rows and colums at 0 rather than 1. So the first row is 0, second row is 1 and so on. The same thing applies to columns also. See below for an input with n rows and m columns. (i, j) are the row, column coordinates.

Wiki Markup
\[ (0,0) (0,1) (0,2)...(0,m-1) \]

Wiki Markup
\[ (1,0) \____________________\_ \]

Wiki Markup
\[ (2,0) \____________________\_ \]

Wiki Markup
\[_...\______________________\_ \]

Wiki Markup
\[(n-1,0) \_________\_ _(n-1,m-1)\]

Wiki Markup
Once again, edit _beam4.m_. Now, use the dlmread command with the delimiter and range inputs to extract both A and B at the same time. The delimiter should be '', the range should be \[0 0 1 1\] for A and \[2 0 3 0\] for B. Remember to add your semi-colons.

Save and run beam4.m again. You should still get the same results. We can now move on to the next part of the tutorial.

...