# How do i add all the values which i get using eval function?

4 views (last 30 days)
DIJESH on 27 May 2014
Commented: DIJESH on 27 May 2014
prompt = {'Enter the forces(kN): '};
title = 'Environmental forces';
for ii=1:numel(f)
eval(sprintf('f%d = %f\n',ii,f(ii)))
end
prompt1 = {'Enter the respective angles: '};
title1 = 'Angle w.r.t x-axis';
for jj=1:numel(a)
eval(sprintf('a%d = %f\n',jj,a(jj)))
end
for jj=1:numel(a)
string='f(jj)*cos(jj)';
eval(string)
end
in this code i am getting several values for string. I have to add all those values. can anyone help?

Jos (10584) on 27 May 2014
Avoid EVAL !!!
You do not want to store a series of related values in separate variables f1 = .. f2 = .. but rather in a single variable with multiple elements f(1) = .. f(2) = ..
Your codes is almost there. Just remove the evals ...
prompt = {'Enter the forces(kN): '};
title = 'Environmental forces';
prompt1 = {'Enter the respective angles: '};
title1 = 'Angle w.r.t x-axis';
if numel(f) ~= numel(a)
error('The vectors should have the same number of elements') ;
else
sum=0 ;
for jj=1:numel(a)
sum = sum + f(jj)*cos(a(jj)) ;
end
% or use the power of matlab:
% sum = sum(f.*cos(a))
end
Lesson to be learned: avoid eval!
DIJESH on 27 May 2014
thank you for the help!!! :)

rifat on 27 May 2014
prompt = {'Enter the forces(kN): '};
title = 'Environmental forces';
for ii=1:numel(f)
eval(sprintf('f%d = %f\n',ii,f(ii)))
end
prompt1 = {'Enter the respective angles: '};
title1 = 'Angle w.r.t x-axis';
for jj=1:numel(a)
eval(sprintf('a%d = %f\n',jj,a(jj)))
end
sum=0;
for jj=1:numel(a)
string='f(jj)*cos(jj)';
sum=sum+eval(string);
end
DIJESH on 27 May 2014
thanx for trying rifat :)