Doug Hull, MathWorks
(Originally posted on Doug's MATLAB Video Tutorials blog.)
I was recently answering a question that came in from a MATLAB user on this blog. In the end, the question was really one where he was doing a calculation and storing the result in scalar Y. When he was done with the loop, he only had the final value of Y but not all of them that he had calculated on the way. The solution to this was to store each value of Y into a vector. This video is meant for new users to show how to do that.
Other videos have been gathered here: https://blogs.mathworks.com/pick/category/video/ Other MATLAB Basics posts have been gathered here: https://blogs.mathworks.com/pick/category/matlab-basics/
In today's video on MATLAB basics, we're going to show how to store the results of a calculation inside of a vector, which is a special case of a matrix. What we're going to do is say for I is equal 1 : 10, meaning that we're going to count from 1 to 10. Now inside of this loop what we're going to do is say Y is equal to I plus rand. So we're going to just have a random number generated—somewhere between 0 and 1—and add it to the current value of I, and end.
So I want to actually see the results of this. So I'm going to take the semicolon off. Now let's run this. I'm going to run it by hitting F5, which means save and run the current file. And we can see we've gone through this loop 10 times and gotten different values of Y.
Now what if we wanted to plot those? Well, every time through this loop we have overwritten the value of Y so we lost, like for instance, 9.528 when we generated 10.857. That isn't going to do very well if we want to plot this data.
So what we can do is come in here and say I want to make Y into a vector. So every time through the loop now this statement is going to read Y element 1 or 2, or 3, or 4, is going to equal to the same thing it did before. Now let's run this again. I'm going to do that by hitting F5. And what we'll see by scrolling up through the Command Window here is that at first, we have Y is equal to a 1 by 1, then a 1 by 2, 1 by 3. And each time we keep adding another column to this. And so we're storing that data.
Now that it's done what we can do is come in here and say Plot (y), and we can see that on the graph here. So this is a very simple example of a technique that is used all the time in MATLAB where you will just take the results and store them in a matrix for easy manipulation and use later.
This would also work if you were calculating a vector each time through the loop and wanted to store it as another column. So each column might represent one time through your loop. If your calculation is creating a matrix each time, you would then use a three-dimensional matrix, and so on. MATLAB actually supports n-dimensional matrices, so you can see how this can work for multiple dimensions.
Recorded: 20 Aug 2007