Это решение практически соответствует точным требованиям вашего вопроса. Я чувствую себя немного странно, используя это, хотя с EVAL. Вы также хотели бы включить в это проверку ошибок.
classdef f < handle
properties (Access = private)
functionString = '';
end
methods
function obj = f
if nargin == 0
obj.functionString = input('Enter your function: ', 's');
end
end
function value = subsref(obj, a)
a = a.subs{:};
value = eval(obj.functionString);
end
function display(obj)
end
end
end
Затем вы можете использовать этот класс как:
>> a = f
Enter your function: a^2+3*a-3
>> a(1)
ans =
1
>> a(2)
ans =
7