problem with code

1 view (last 30 days)
Tor Fredrik Hove
Tor Fredrik Hove on 22 Oct 2011
I am trying a script that does not work. First I define a structure in matlab:
>> package=struct('item_no',123,'cost',19.99,'price',39.95,'code','g')
package =
item_no: 123
cost: 19.9900
price: 39.9500
code: 'g'
then I have made a script who will try to find out the value of a field in the structure:
inputfield=input('Which field would you like to see: ','s')
if isfield(package, inputfield)
fprintf('The value of the %s field is: %c\n',inputfield,...
eval(['package.'inputfield]))
else
fprintf('Error: %s is not valid field\n', inputfield)
end
but i get error message:
>> structurevalue ??? Error: File: structurevalue.m Line: 6 Column: 22 Unexpected MATLAB expression.

Accepted Answer

Mitch Martelli
Mitch Martelli on 22 Oct 2011
the problem is in the eval,try to put a blank after 'package.' :
eval(['package.' inputfield])
  5 Comments
Tor Fredrik Hove
Tor Fredrik Hove on 22 Oct 2011
Hi Image Analyst! I am a bit new with matlab so convenient choices is not my strong side. Eval is also a part of the curriculum so I have to know something about it either way
Jan
Jan on 22 Oct 2011
I do not understand what "is part of the curriculum" means. Using EVAL is a bad programming practize, because it is prone to errors and results in slow code.
"package.(inputfield)" is much safer and faster than "eval(['package.' inputfield])".

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 22 Oct 2011
This is what the line should look like:
fprintf('The value of the %s field is: %c\n',inputfield, package.(inputfield));
Look up "dynamic field names" in the help for more info.
  1 Comment
Jan
Jan on 22 Oct 2011
+1: Best answer. Perhaps ignoring your answers is a running joke. However, I'm missing the punchline.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!