Clear Filters
Clear Filters

How to find what the value of a variable is in a loop using another variable in the loop?

3 views (last 30 days)
Hi,
Just trying to figure out how to get a value of a changing value in a loop if I have another value that is also looping. For example, here I am trying to figure out what motor speed a certain torque will give me:
for i=1:2000
%Increase Current through loop
I(i)=-0.1+(i*0.1);
%Calculate RPM with increasing Current
Omega(i)=((Ebat-(I(i)*R))/Ke)/((2*pi)/60);
%Calculate Torque with increasing Current
Torque(i) = Kt * I(i);
%This is my current attempt at getting the motor speed at a certain value of
%torque, however the torque is never exactly equal to TorqueReq which is a %constant
if Torque(i) == TorqueReq
x=MotorSpeed(i)
end
So If I have a certain value for torque, how can I find the corresponding value for speed at that torque? Thanks for any help!

Accepted Answer

Image Analyst
Image Analyst on 5 Nov 2013
You need to read the FAQ, http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F, about why you should not compare floating point numbers for exact matches.
I fixed your code to check within a tolerance, as according to the FAQ:
tolerance = 0.001; % or some small number
for k=1:2000
%Increase Current through loop
I(k)=-0.1+(k*0.1);
%Calculate RPM with increasing Current
Omega(k)=((Ebat-(I(k)*R))/Ke)/((2*pi)/60);
%Calculate Torque with increasing Current
Torque(k) = Kt * I(k);
%This is my current attempt at getting the motor speed.
% TorqueReq is a constant.
if abs(Torque(k)- TorqueReq) < tolerance
x=MotorSpeed(k)
break; % if you want to exit the loop.
end
end
I also changed your loop index from i (the imaginary number) to k.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!