【发布时间】:2017-12-26 16:05:57
【问题描述】:
该函数在命令窗口中调用时效果很好。
function z = values(x1)
y = [9; 8; 6; 5; 6; 7; 8];
x = [1; 2; 3; 4 ;5; 6; 7];
a = find(abs(x-x1) < 0.001);
z = y(a);
plot(x,y);
end
>>values(3)
ans=6
当我尝试使用fminsearch 内置MATLAB函数时:
>> f = @values;
>> options = optimset('Display','iter','TolX',0.001);
>> [xc, FunVal] = fminsearch(f, 2, options);
我在命令窗口中收到以下错误:
Iteration Func-count min f(x) Procedure 0 1 8下标分配维度不匹配。
fminsearch中的错误(第 255 行)fv(1,j+1) = f;
当我尝试使用fminbnd MATLAB 内置函数时:
>> f = @values;
>> options = optimset('Display','iter','TolX',0.001);
>> [xc, FunVal, EF, output] = fminbnd(f, 2, 6, options)
我在命令窗口中收到以下错误:
a = Empty matrix: 0-by-1 使用
fminbnd时出错(第 220 行)
用户提供的目标函数必须返回一个标量值。
为什么会发生这种情况以及如何解决?
【问题讨论】:
标签: matlab optimization minimization