# Subscript indices must either be real positive integers or logicals. how can i change? thanks!

1 view (last 30 days)
weiying chen on 2 Oct 2019
Answered: Andrei Bobrov on 2 Oct 2019
dt = 0.1; % time step size in seconds
i0 = 0; % potential at time 0
Vs = 10; % positive time independant source potential
L = 2; % inductor
R = 1; % resistor
N = 10; % number of time steps
i(0) = v0; %initial condition
for loop=1:N %recursive
i(loop) = i(loop-1) + Vs*dt*/L - i(loop-1)*R/L;
end
plot([0:N-1]*dt,v, ‘-k’)
xlabel( ‘Time in seconds’)
ylabel( ‘Inductor current’)
grid on hold time = [0:N-1]*dt;
i_ana = Vs/R*(1- exp(-time*(R/L));
plot(time,I_ana,’–k’)
hold
legend( ‘Numerical solution’, ‘Analytical solution’)
Subscript indices must either be real positive integers or logicals.

Bjorn Gustavsson on 2 Oct 2019
Matlab uses 1-based indexing to vectors, so your line:
i(0) = v0; %initial condition
Has to be changed to:
i(1) = v0; %initial condition
Then you have to adapt the rest of your script to account for that.
HTH

Andrei Bobrov on 2 Oct 2019
ii(1) = v0; %initial condition
for loop=2:N %recursive
ii(loop) = ii(loop-1) + Vs*dt*/L - ii(loop-1)*R/L;
end