Errors in Menu program

2 views (last 30 days)
Oliver
Oliver on 22 Dec 2011
Hi all,
I'm a newbie to Matlab and wrote a program using menu as follows:
*eapplication.m*
choice = eoption;
while choice ~= 4
switch choice
case 1
explaine;
case 2
limite;
case 3
x = input('Please enter a value for x: ');
expfn(x);
end
choice = eoption;
end
*eoption.m*
choice = menu('Choose an e option', 'Explanation', 'Limit', ... 'Exponential function', 'Exit Program');
while choice == 0
disp('Error - please choose one option.')
choice = menu('Choose an e option', 'Explanation', 'Limit', ... 'Exponential function', 'Exit Program'); end
*It gave me an error: ??? Attempt to execute SCRIPT eoption as a function: C:\Documents and Settings\Olive\My Documents\MATLAB\eoption.m
Error in ==> eapplication at 1 choice = eoption;*
Could you please shed some lights?
Thanks heaps.
Oliver.

Accepted Answer

Matt Tearle
Matt Tearle on 22 Dec 2011
Pretty much what it says. The line choice = eoption; implies that eoption is a function call (because it is asking for an output, to be assigned to choice). But eoption is a script, not a function.
The difference is in how variables are managed. Scripts work with the base MATLAB workspace. Functions use local workspaces, so variables are local. So your options are:
  1. Turn eoption into a function by adding the line function choice = eoption at the beginning.
  2. Leave eoption as a script and inherit choice from the base workspace. Hence, change the line choice = eoption; (in eapplication) to just eoption;
  2 Comments
Oliver
Oliver on 22 Dec 2011
Thank you so much Matt. You're wonderful. Can you recommend good books for me? I've got Matlab: a practical introduction to programming and problem solving and Matlab programming for Engineers. Both have errors.
Matt Tearle
Matt Tearle on 22 Dec 2011
There are a lot of books out there, as well as other resources. Are you in academia or industry? And you're in engineering (or did you just happen to have an engineering MATLAB book)?
http://www.mathworks.com/support/books/index_by_categorytitle.html?category=17&sortby=title

Sign in to comment.

More Answers (1)

Jose Jeremias Caballero
Jose Jeremias Caballero on 22 Dec 2011
Hello
clear all
clc
choice = menu('Choose a opcion','explaine','limite','expfun','exit of menu');
switch choice
case 1
explaine='matlab';
display(explaine);
case 2
syms x
limit((x-2)/(x^2-4),2)
case 3
x = input('Please enter a value for x: ');
expfn=inline('sin(x)+5');
expfn(x)
otherwise
display('thanks');
end

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!