Error " Array indices must be positive integers or logical values."
1 view (last 30 days)
Show older comments
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/288456/image.png)
This is the Question I am being asked to solve and this is the code I have so far...
T1 = 70; %deg F
T2 = 200; %deg F
W = 2; %ft
L = 2; %ft
x = 1; %ft
y = 1; %ft
for n=0:1.83:11
T(n)=(T2-T1)*(2/pi)*(2/n)*(sin(n*pi*x/L))*(sinh(n*pi*y/L))/sinh(n*pi*W/L)+T1;
end
I'm nor sure if my n for the for loop is correct since nmax is 11 and there needs to be six steps, but I keep getting an Error " Array indices must be positive integers or logical values."
Not sure how I can fix the Error.
1 Comment
Rik
on 29 Apr 2020
As a side note: if your code is correct, then the only "correct and appropriate" use of a loop will be be this:
for dummy=1
T=%array operation that creates T
end
Accepted Answer
Rik
on 29 Apr 2020
You need to distinguish between the index of your variable in Matlab and the subscript in the mathematical sense.
sub=___;%hint: look at linspace
for n=1:numel(sub)
T(n)=___
3 Comments
Rik
on 29 Apr 2020
If you use T(n) in Matlab that can mean two things: you are calling a function with an input argument, or you have a variable and are extracting a value from it. These two interpretations are strictly separated.
You are trying to fill an array with values. You may want to say that T has a specific value for n=0.1, but that doesn't fit either description. So you what you have to do is to create two arrays: one will hold the values of n, the other will hold the respective values of T.
T(0.1) result in an error because T is not a function. Store that 0.1 in another array and use integers to index:
sub=[0.1 0.2];
T(1)=SomeFunction(sub(1));
T(2)=SomeFunction(sub(2));
%don't do T(0.1), but do this:
T(sub==0.1)
More Answers (0)
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!