What is wrong with this code?

I'm getting an unexpected error "Subscript indices must either be real positive integers or logicals." from the line 'trans_P0 = Transmit(T_0);' in the below simple code. T_0 has a value of 1007, if I pass 1007 to Transmit I get no error, but if I pass T_0 I do, which is really unusual as its just looking up an indices. Anyone know what's causing this? (the line 'trans_Art = Transmit(T_A);' give no error fyi).
Z_0 = 1.007;
Z_Total = 1.453;
mu = 0.75;
r = 0.001:0.001:4;
Transmit = exp(-r*mu);
T_0 = round(Z_0,3)*1000;
T_A = round(Z_Total,3)*1000;
trans_P0 = Transmit(T_0);
trans_Art = Transmit(T_A);

 Accepted Answer

madhan ravi
madhan ravi on 28 Oct 2018
Edited: madhan ravi on 28 Oct 2018
Z_0 = 1.007;
Z_Total = 1.453;
mu = 0.75;
r = 0.001:0.001:4;
Transmit = exp(-r*mu);
T_0 = round(Z_0,3)*1000;
T_A = round(Z_Total,3)*1000;
trans_P0 = Transmit(vpa(T_0));
trans_Art = Transmit(T_A);

3 Comments

madhan ravi
madhan ravi on 28 Oct 2018
Edited: madhan ravi on 28 Oct 2018
The problem was simple as you mentioned , T_0 was 1007 but matlab recognises the value in scientific notation as 1.0070e+03 (which is a float value rather than an integer[whole number]) which is the same as 1007 that’s what caused the problem . You can try Transmit(1007) and Transmit(1.0070+e03) and everything will be clear for you.
Great, thanks for your help, much appreciated!!
Anytime :)

Sign in to comment.

More Answers (0)

Asked:

on 28 Oct 2018

Commented:

on 28 Oct 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!