Borrar filtros
Borrar filtros

error in eval command

1 visualización (últimos 30 días)
Mudasir Ahmed
Mudasir Ahmed el 1 de Oct. de 2014
Comentada: Mudasir Ahmed el 1 de Oct. de 2014
clear all clc
a=[12 2 10 20 1 20]; b=[5 21 4 1 4 5]; c=[23 18 13 10 13 17]; d=[8 3 14 6 19 1];
for x=1:6 eval(sprintf('ch%d=[a(1,x) b(1,x) c(1,x) d(1,x)]',x)); end
for y=1:6 eval(sprintf('obj%d=[ch%d(1,1)+(2*ch%d(1,2))+(3*ch%d(1,3))+(4*ch%d(1,4))-30]',y)); end
output of first loop (correct response) ch1 = 12 5 23 8 ch2 = 2 21 18 3 ch3 = 10 4 13 14 ch4 = 20 1 10 6 ch5 = 1 4 13 19 ch6 = 20 5 17 1
in above program, matlab execute and return correct response of first loop, but give error in second loop (Error: This statement is incomplete. ) i want to execute following instruction using eval function for all ch1ch2.....ch6 variables, e.g ch1=[12 5 23 8] a=12 b=5 c=23 d=8 obj=a+2b+3c+4d-30
kindly help me. thanx in advance
  1 comentario
Oleg Komarov
Oleg Komarov el 1 de Oct. de 2014
Editada: Oleg Komarov el 1 de Oct. de 2014
Just do NOT use eval(). You are building a nightmare for yourself as the example code proves.

Iniciar sesión para comentar.

Respuesta aceptada

Thorsten
Thorsten el 1 de Oct. de 2014
for y=1:6
eval(sprintf('obj%d=[ch%d(1,1)+(2*ch%d(1,2))+(3*ch%d(1,3))+(4*ch%d(1,4))-30]',[y y y y y]));
end
  2 comentarios
Mudasir Ahmed
Mudasir Ahmed el 1 de Oct. de 2014
thanx sir, its working :) sir can u defined why you have used [y y y y y]. i got it little bit, i think as equation contain 5 terms a+2b+3c+4c-30 thts why u have used a matrix of 5 y. kindly explain it logically , thanx again sir
Mudasir Ahmed
Mudasir Ahmed el 1 de Oct. de 2014
i got it sir. in eval command %d sign is 5 times used, that's why we have to make a matrix of 5 y.

Iniciar sesión para comentar.

Más respuestas (1)

Michael Haderlein
Michael Haderlein el 1 de Oct. de 2014
To archieve this obj array, you can do the following:
a=[12 2 10 20 1 20]; b=[5 21 4 1 4 5]; c=[23 18 13 10 13 17]; d=[8 3 14 6 19 1];
ch=cat(1,a,b,c,d)';
obj=ch*(1:4)'-30;
Alternatively, you define a,b,c,d as column vectors and concatenate along the second dimension without transposing. In any case, this is the way you should do it in Matlab.
  1 comentario
Mudasir Ahmed
Mudasir Ahmed el 1 de Oct. de 2014
thanx sir. it is also working :)

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by