Array indices must be positive integers or logical values.
    10 views (last 30 days)
  
       Show older comments
    
    Michael Ryan
 on 25 Oct 2021
  
    
    
    
    
    Commented: Michael Ryan
 on 25 Oct 2021
            Can't seem to figure out the reason for the error.  The array indices, i, as far as I can tell are intergers between 1 and 1000.
Attached is the code:
clear
clc
close all
t = linspace(0,2,1000);
f = zeros(1,length(t));
for i = 1:length(t)
    if  t(1i) <= 1
        f(1i) = 2-(2.*((t(1i)-1).^2));
    elseif t(1i) > 1 
        f(1i) = 0;
    end
end
plot(t,f)
Returns the error:
Array indices must be positive integers or logical values.
Error in aufgabe1 (line 10)
f(1i) = 2-(2.*((t(1i)-1).^2));
0 Comments
Accepted Answer
  Scott MacKenzie
      
 on 25 Oct 2021
        
      Edited: Scott MacKenzie
      
 on 25 Oct 2021
  
      You've got a typo in your code.  Change the indices
1i
to
i
More Answers (1)
  Walter Roberson
      
      
 on 25 Oct 2021
        t = linspace(0,2,1000);
t is a (real) vector of length 1000
    if  t(1i) <= 1
That asks to index the vector t at location 1i . However, 1i means sqrt(-1) which is not real-valued and is not a positive integer.
1 Comment
  Walter Roberson
      
      
 on 25 Oct 2021
				t = linspace(0,2,1000);
nt = length(t);
f = zeros(1,nt);
for K = 1:nt
    if  t(K) <= 1
        f(K) = 2-(2.*((t(K)-1).^2));
    elseif t(K) > 1 
        f(K) = 0;
    end
end
plot(t,f)
ylim([-1 3])
See Also
Categories
				Find more on Loops and Conditional Statements 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!


