MATLAB: How to get functions out of inputdlg

inputdlg

questions = {'Enter a function','Enter a lower limit','Enter an upper limit'};
prompt = inputdlg(questions)
equation = str2num(prompt{1})
lower_limit = str2num(prompt{2})
upper_limit = str2num(prompt{3})
P=int(sym('equation'),lower_limit,upper_limit)
Hello everyone. My question is how do I keep the inputted equation (such as x.^2) as itself, instead of it changing to x. When I run the program below (you should be able to copy and paste it if you want to run it) the inputted function gets changed to x. Many thanks.

Best Answer

I would do something like this, using str2func and vectorize:
questions = {'Enter a function of ‘x’','Enter a lower limit','Enter an upper limit'};
prompt = inputdlg(questions)
equation = str2func(['@(x) ',vectorize(prompt{1})])
lower_limit = str2num(prompt{2})
upper_limit = str2num(prompt{3})
P=integral(equation,lower_limit,upper_limit)
Experiment to get different results.
Related Question