Subscript indices problem with a for loop
2 次查看(过去 30 天)
显示 更早的评论
Hello, I am having problems creating a for loop to calculate and store temperatures in the various sections of the atmosphere, with the following code I get the error "Subscript indices must either be real positive integer or logicals":
Altitude = 0:1:100000; Temperature 1 = 288.15; L0 = -0.0065;
for i = 1:11001 Altitude = i -1; Temperature(Altitude) = Temperature1 + (L0*Altitude); end
Thank you.
0 个评论
回答(2 个)
Jan
2017-3-15
编辑:Jan
2017-3-15
With your code in the first iteration tis happens:
Temperature(0) = Temperature1 + (L0 * Altitude);
but 0 is not a valid index. USe this instead:
Temperature1 = 288.15;
L0 = -0.0065;
Temperature = zeros(1, 11001); % Pre-allocate!!!
for k = 1:11001
Temperature(i) = Temperature1 + (L0 * (i-1));
end
Or shorter without the loop:
Temperature = Temperature1 + L0 * (0:11000);
0 个评论
Alexandra Harkai
2017-3-15
Altitude is 0 in the first loop, which is not a valid index in this case.
It is suspicious though that you assign a numerical array to Altitude, then later it gets overwritten by i-1.
This also doesn't look OK, you should get an error:
Temperature 1 = 288.15;
Overall it seems you are using a loop for something that doesn't require a loop: multiplying a vector with a scalar and then adding another scalar to it. You can just write it like so:
Temperature = Temperature1 + (L0 * 0:11000);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!