Matlab 辛普森&x27;s组合规则GUI

Matlab 辛普森&x27;s组合规则GUI,matlab,Matlab,我在做辛普森组合规则时遇到了这个问题 试图访问函数(1.2);索引必须是正整数或逻辑索引 Simpson_Comp>Calcular_回调中出错(第185行) sum_偶=sum_偶+函数(x(i));" 我正在用x^2和[0,3] 我不知道为什么x(I)必须是整数?出现错误是因为句柄。function是一个字符串,但您假设它是一个实际函数,正如您的注释中所述。因此,MATLAB将其解释为将索引转换为字符串。尝试使用将字符串转换为由上下文定义的函数句柄另外,由于str2func接受格式类似于匿名

我在做辛普森组合规则时遇到了这个问题

试图访问函数(1.2);索引必须是正整数或逻辑索引

Simpson_Comp>Calcular_回调中出错(第185行) sum_偶=sum_偶+函数(x(i));"

我正在用
x^2
[0,3]


我不知道为什么
x(I)
必须是整数?

出现错误是因为
句柄。function
是一个字符串,但您假设它是一个实际函数,正如您的注释中所述。因此,MATLAB将其解释为将索引转换为字符串。尝试使用将字符串转换为由上下文定义的函数句柄另外,由于
str2func
接受格式类似于匿名函数的字符串,因此需要在实际字符串之前加上
@(x)

因此,可以将其添加到GUI小部件中的字符串中,也可以在捕获事件触发后获取字符串时预先添加该字符串

让我们使用第二种方法,因为我假设您不希望用户键入的文本超过他们需要的数量。因此,在调用
get
后,使用
str2func

funcion=get(handles.funcion,'string');
funcion = str2func(['@(x)' funcion]); %// New

你是如何定义
函数的?
?我的意思是,我是以字符串的形式输入的,但很明显,我输入了一个整数。但我不知道为什么…您好,我这样做了,我遇到了一个问题:警告:STR2FUNC“x^2”的输入“”不是有效的函数名。这将在将来的版本中生成错误。>在Simpson_Comp>Calcular_回调函数中,175在gui_mainfcn中,96在Simpson_Comp回调函数中,42在(hObject,eventdata)中,Simpson_Comp(“Calcular_回调函数”,hObject,eventdata,guidata(hObject))未定义函数“x^2”,用于“double”类型的输入参数。@CarlosMartínez您需要与
str2func
一起使用。e、 g.
handles.function='@(x)x^2';function=str2func(handles.function);功能(3)
?但是对于GUI我该如何做呢?@CarlosMartínez您可以在编辑框中键入
'@(x)x^2'
,而不是键入
'@(x)x^2'
。或者,如果你想冒险,只需在字符串前面加上
'@(x)
function=['@(x)'get(handles.function,'string')编辑,我检查了一个尚未完成的操作:
function=str2func(function)再次
funcion=get(handles.funcion,'string');
funcion = str2func(['@(x)' funcion]); %// New