MATLAB How to Implement Iterations in MATLAB for a Given Formula?

  • Thread starter Thread starter sandy.bridge
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The discussion focuses on using MATLAB for beginners, specifically implementing the formula v(t)=10(1-e^{-t}) for the range 0<=t<=5. It emphasizes the importance of vectorization over for loops in MATLAB for efficiency. Instead of using a for loop to iterate through values, users are encouraged to create a vector of t values and apply the function directly, which is more efficient and results in better performance. A sample code snippet is provided to illustrate this approach. The conversation also touches on the speed comparison between for loops and vector operations, demonstrating that vector operations are significantly faster. Additionally, resources for learning MATLAB, including MathWorks documentation and beginner exercises, are recommended for those seeking to improve their skills.
sandy.bridge
Messages
797
Reaction score
1
Hello all,
I am trying to play around with MATLAB so I can become familiar with it. I have absolutely no programming experience, si it's a bit confusing for me. I have this formula:
v(t)=10(1-e^{-t})
and I want to implement iterations on MATLAB for 0<=t<=5.

I understand that I need to start "for loop", but I'm not entirely sure how to go about it. I know to start it,
"for i=0:n"

Any suggestions and explanations?
 
Last edited by a moderator:
Physics news on Phys.org


Do you mean that you want to apply that function to each value of t from 1 to 5? There's no need to use a for loop.

t = 1:5;
v = 10*(1 - e.^(-t))
 


Try this:
Code:
t = linspace(0, 5, 1000); % Produces 1000 data points linearly spaced on [0,5].
v = 10*(1 - exp(-t));
v will then be in your workspace and you can do anything with it. For plotting, the more points you use the better the plot will be.

In MATLAB, you should always prefer using vectors to for loops, e.g. use this:
Code:
x = 0:.01:100;
y = x .^ 2;
instead of:
Code:
% BAD !
x = 0:.01:100;
for i = 1:length(x);
    y(i) = x(i) .^ 2;
end

Here is a quick program that tests the speed of a for loop versus a vector operation:
Code:
t = cputime;
e = tic;
x = 0:.01:1000000;
for i = 1:length(x);
    y(i) = x(i) .^ 2;
end
fprintf('for: cputime: %f elapsed: %f \n', [cputime - t, toc(e)]);
t = cputime;
e = tic;
x = 0:.01:1000000;
y = x .^ 2;
fprintf('vec: cputime: %f elapsed: %f \n', [cputime - t, toc(e)]);

On my computer it outputs:
Code:
for: cputime: 12.850000 elapsed: 12.723039 
vec: cputime: 1.270000 elapsed: 1.395663
As you can see, even with the small example, MATLAB is more efficient using vectors than loops.
 
Last edited:


Can you guys recommend a good book for beginners? I was also attempting to implement Euler's method for differentials.
 

Similar threads

Replies
4
Views
1K
Replies
5
Views
2K
Replies
4
Views
2K
Replies
5
Views
3K
Replies
4
Views
3K
Back
Top