# How to reference a variable saved as .mat file to execute code

3 views (last 30 days)
LB on 18 Sep 2019
Commented: Walter Roberson on 18 Sep 2019
So I have a variable named cyc_mph that is a 1370x2 double. This data is stored as a .mat file.
The first column in the variable file gives me 't' (which goes from 0 to 1369) and the second column gives me 'Vmph'
I am trying to calculate 'a' by the formula given below. But what I want the code to do, is to get the value of 'Vmph' that corresponds to its 't+1' or 't-1' in the data file and give me 'a' for t=2:1:1369.
I do not think my code is gathering the correct 'Vmph' corresponding to the correct 't+1' or 't-1' in my code below. Do you know what I am doing wrong?
CODE:
t = cyc_mph(:,1);
Vmph = cyc_mph(:,2);
for t=2:1:1369
a = (Vmph(t+1)-Vmph(t-1))/(2*((t+1)-(t-1)));
A = ((1/2)*Rhoa*Cd*Af*(Vmph(t).^3));
G = (Mv*g*cos(0).*Vmph(t));
I = (1.1*Mv.*a.*Vmph(t));
Pw(t-1) = (A+G+I)/1000;
end

#### 1 Comment

Walter Roberson on 18 Sep 2019
t = cyc_mph(:,1);
That extracts t values from the array.
for t=2:1:1369
That overwrites that vector of t values with integer constants 2, 3, up to 1369, one at a time.

Walter Roberson on 18 Sep 2019
t = cyc_mph(:,1);
Vmph = cyc_mph(:,2);
for tidx=2:length(t)-1
a = (Vmph(tidx+1)-Vmph(tidx-1))/(2*(t(tidx+1)-t(tidx-1)));
A = ((1/2)*Rhoa*Cd*Af*(Vmph(tidx).^3));
G = (Mv*g*cos(0).*Vmph(tidx));
I = (1.1*Mv.*a.*Vmph(tidx));
Pw(tidx-1) = (A+G+I)/1000;
end

LB on 18 Sep 2019
Thank you Walter! If you don't mind, can you please explain the logic behind your code so I can understand for future reference?
Walter Roberson on 18 Sep 2019
t = cyc_mph(:,1);
so in one place you are expecting t to refer to some input data . But right after you had
for t=2:1:1369