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);

 Respuesta aceptada

madhan ravi
madhan ravi el 28 de Oct. de 2018
Editada: madhan ravi el 28 de Oct. de 2018

0 votos

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 comentarios

madhan ravi
madhan ravi el 28 de Oct. de 2018
Editada: madhan ravi el 28 de Oct. de 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.
aidan
aidan el 28 de Oct. de 2018
Great, thanks for your help, much appreciated!!
madhan ravi
madhan ravi el 28 de Oct. de 2018
Anytime :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 28 de Oct. de 2018

Comentada:

el 28 de Oct. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by