Looping over a vector with non-integer values
5 views (last 30 days)
Show older comments
I'm trying to loop through each element of the vector 'N' but it keeps giving me back the 'attempting to access; index must be a positive integer or logical.' Is there a way I can do this without having to do each of them separately?
N = [15.66 9.27 6.72 4.84 4.1 3.4];
km_factors = zeros(size(N));
r = (616/2)/1000;
m = 1140;
vh = 1.999;
for i = N
x(i) = (0.3*i)/r;
z = m/vh;
km_factors = (2.73e-02*(x(i)))+(9.85e-04*(x(i)^2))-(5.71e-05*(z)) ...
+(8.22e-08*(z^2))-(2.87e-05*(x(i)*z));
end
disp(km_factors);
2 Comments
Accepted Answer
Star Strider
on 4 Feb 2015
I don’t know exactly what you want, but one solution is to set the for loop index to go from 1 to the length of ‘N’. I substituted ‘N(i)’ for ‘i’ in the ‘x’ assignment, and subscripted ‘km_factors’. It works. Check to be certain it calculates what you want:
N = [15.66 9.27 6.72 4.84 4.1 3.4];
km_factors = zeros(size(N));
r = (616/2)/1000;
m = 1140;
vh = 1.999;
for i = 1:length(N)
x(i) = (0.3*N(i))/r;
z = m/vh;
km_factors(i) = (2.73e-02*(x(i)))+(9.85e-04*(x(i)^2))-(5.71e-05*(z))+(8.22e-08*(z^2))-(2.87e-05*(x(i)*z));
end
Note that it’s generally not a good idea to use ‘i’ and ‘j’ as variables, including loop counters, because MATLAB uses those for its imaginary operators. Not using them as variables avoids confusion.
2 Comments
Star Strider
on 4 Feb 2015
My pleasure!
I remember encountering the same problem when I was learning MATLAB.
More Answers (0)
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!