在MATLAB上输入函数

时间:2014-11-21 03:43:24

标签: matlab

我一直在尝试编写一个MATLAB代码,该代码可以使用任意数量的变量接受任何函数进行优化。

function Enter_Optimization_Code

clear all
clc

x=[];
U='';

n=input('Enter the number of variables= ')
U=input('Enter function with variables as x(1), x(2), x(3)..= ','s')
start=input('Enter coordinates of the starting point as [1,3,..]= ')

for i=1:n
    x(i)=start(i)
end

int(U)

代码要求用户输入他们想要的变量数,然后输入他们想要优化的函数(我还没有编写优化代码)。现在,我希望代码将起点的值插入函数并吐出答案。

e.g。我输入的函数是x(1)+ x(2),起点为[1,2]。这应该导致代码计算1 + 2 = 3并打印3.这就是发生的事情:

Enter the number of variables= 2

n =

     2

Enter function with variables as x(1), x(2), x(3)..= x(1)+x(2)

U =

x(1)+x(2)

Enter coordinates of the starting point as [1,3,..]= [1,2]

start =

     1     2


x =

     1


x =

     1     2

Undefined function 'int' for input arguments of type 'char'.

Error in Enter_Optimization_Code (line 17)

有人可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

如果您尝试将函数与符号函数int集成,则无法将字符串输入传递给该函数,它必须是符号表达式,请查看文档。

您可能需要执行int(sym(U))而不是将字符串U转换为符号表达式。

根据评论和使用TroyHaskin的建议进行编辑

这是一个应该有效的版本。但是,我不确定为什么这是一个函数,它应该是一个脚本。

function Enter_Optimization_Code
% Not sure why you're using a function, this should really be a script

% clear all should only be used in scripts, not in functions
clc

% n=input('Enter the number of variables= '); not needed
U=input('Enter function with variables as x(1), x(2), x(3)..= ','s');
start=input('Enter coordinates of the starting point as [1,3,..]= ');

f = str2func(['@(x)',U]);
y = feval(f,start);

disp([U 'evaluated at x=([' num2str(start) ']) = ' num2str(y)])

答案 1 :(得分:1)

如果您希望用户以这种方式输入等式,您可以使用str2func将字符串转换为匿名函数:

fun = str2func(['@(x)',U]);

这适用于x(1)-x(2)^x(3)等函数文字和有效函数调用my_opt(x)