MATLAB Help - Comparing values/Indexing

  • Thread starter Thread starter nvalia
  • Start date Start date
  • Tags Tags
    Matlab
AI Thread Summary
The user is trying to find the first relative maximum of a decaying exponential function in MATLAB without using built-in functions. They are attempting to use indexing and for loops but are encountering issues with their current approach. A key mistake identified is the use of a non-integer increment in the loop, which should instead iterate through integer indices. After receiving feedback, the user acknowledges the error and expresses gratitude for the help. The discussion highlights common pitfalls for beginners in MATLAB, particularly with indexing.
nvalia
Messages
4
Reaction score
0

Homework Statement



I am very, very new to MATLAB, and can't seem to figure out this seemingly simple problem.

Given a t-array and a y-array for a decaying exponential function, my task is to find the first relative maximum in the graph without using Matlab's preset relative max. functions. I'm attempting to do this by comparing y-values at a certain "t" to y-values at "t0" and "t1" (before and after "t"). I'm using indexing, for loops, etc.

Homework Equations



N/A

The Attempt at a Solution



function[max,t_max] = relMax(t,y)
for i = 1:.001:length(t);
y(:,i+1) = y;
y0 = y(:,i);
y1 = y(:,i+2);
if (y0<y && y>y1)
max = y;
disp(max)
t_max = t;
disp(t)
break
end
end

---

Clearly I am making some kind of stupid mistake here. I don't really know how to use indexing very well, and it's causing me problems.

Thanks in advance!
 
Last edited:
Physics news on Phys.org
nvalia said:

Homework Statement



I am very, very new to MATLAB, and can't seem to figure out this seemingly simple problem.

Given a t-array and a y-array for a decaying exponential function, my task is to find the first relative maximum in the graph without using Matlab's preset relative max. functions. I'm attempting to do this by comparing y-values at a certain "t" to y-values at "t0" and "t1" (before and after "t"). I'm using indexing, for loops, etc.


Homework Equations



N/A


The Attempt at a Solution



function[max,t_max] = relMax(t,y)
for i = 1:.001:length(t);
y(:,i+1) = y;
y0 = y(:,i);
y1 = y(:,i+2);
if (y0<y && y>y1)
max = y;
disp(max)
t_max = t;
disp(t)
break
end
end

---

Clearly I am making some kind of stupid mistake here. I don't really know how to use indexing very well, and it's causing me problems.

Thanks in advance!

Indexes must be integers. You should make your loop as
for i = 1: length(t)

0.001 is the increment in t, not in the index.
 
Thank you! I figured out what I was doing wrong. :)
 
Back
Top