Looping over a vector with non-integer values

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 commentaires

per isakson
per isakson le 4 Fév 2015
"do each of them separately?" &nbsp What do you mean? Do what separately?
Levi Autrey
Levi Autrey le 4 Fév 2015
I guess I should have worded that a little better. I mean loop through each individual number in 'N' 'by hand', if you will.

Connectez-vous pour commenter.

 Réponse acceptée

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 commentaires

Levi Autrey
Levi Autrey le 4 Fév 2015
It works. Thank you very much, I've been struggling with this for quite some time.
Star Strider
Star Strider le 4 Fév 2015
My pleasure!
I remember encountering the same problem when I was learning MATLAB.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by