MATLAB Answers

0

For loop error: Subscript indices must either be real positive integers or logicals

Asked by Mohsina Zafar on 12 Jul 2019
Latest activity Commented on by Mohsina Zafar on 12 Jul 2019
Accepted Answer by KSSV
I am executing a for loop but it gives following error at time 0.6:
T_o=[0;0;0];
T_d=[0;0;0];
T_l=[0;0;0];
out_n=zeros([],3);
for t=0:0.1:10
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)];
T_e=T_d-T_o;
T_e=[t*10 T_e'];
a = sim('PD_control','SimulationMode','normal');
out = a.get('T_u');
out_n(t*10+1,:) = out(2,:)
end
The Simulink file called by this code is attached here.

  0 Comments

Sign in to comment.

Products


Release

R2016a

2 Answers

Answer by KSSV
on 12 Jul 2019
 Accepted Answer

T_o=[0;0;0];
T_d=[0;0;0];
T_l=[0;0;0];
out_n=zeros([],3);
tt=0:0.1:10 ;
for i = 1:length(tt)
t = tt(i) ;
T_o = [0.05*(10-t);0.04*(10-t);0.03*(10-t)];
T_e=T_d-T_o;
T_e=[t*10 T_e'];
a = sim('PD_control','SimulationMode','normal');
out = a.get('T_u');
out_n(i,:) = out(2,:)
end

  1 Comment

Sign in to comment.


Answer by Walter Roberson
on 12 Jul 2019

mat2str((find((0:0.1:10)*10-(0:100))-1)/10)
0.3 0.6 0.7 1.2 1.4 2.3 2.4 2.8 2.9 4.1 4.6 4.8 5.2 5.4 5.9 6.2
That is, 0.3 * 10 is not 3.0 exactly.
0.1 in binary floating point is not exactly 1/10, just the same way that in decimal 0.333...3 * 3 is 0.999...9 instead of 1

  1 Comment

Sign in to comment.