已超出函数评估的最大数量 - 增加 MaxFunEvals 选项

问题描述 投票:0回答:1

我试图使用下面的代码将数据集拟合到正弦函数中:

data = importdata('analisipicco.txt') ;  
x = data(:,1) ; y = data(:,2) ; 
yu = max(y);
yl = min(y);
yr = (yu-yl);                               % Range of ‘y’
yz = y-yu+(yr/2);
zx = x(yz .* circshift(yz,[0 1]) <= 0);     % Find zero-crossings
per = 2*mean(diff(zx));                     % Estimate period
ym = mean(y);                               % Estimate offset

fit = @(b,x)  b(1).*(sin(2*pi*x./b(2) + 2*pi/b(3))) + b(4);    % Function to fit
fcn = @(b) sum((fit(b,x) - y).^2);                              % Least-Squares cost function
s = fminsearch(fcn, [yr;  per;  -1;  ym])                       % Minimise Least-Squares

xp = linspace(min(x),max(x));

figure(1)
plot(x,y,'b',  xp,fit(s,xp), 'r')
grid

其中输出参数向量 s(函数中的 b)的元素为:

s(1):正弦波幅度(单位为y)

s(2):周期(以x为单位)

s(3):相位(相位为s(2)/(2*s(3)),单位为x)

s(4):偏移量(以y为单位)

但是当我使用我的数据集运行代码时,命令窗口显示以下内容:

Maximum number of function evaluations has been exceeded
         - increase MaxFunEvals option.
         Current function value: NaN 
s =

   1.0e+05 *

    1.0466
       NaN
   -0.0000
    2.4885

我不明白我的数据是否不适合正弦函数,或者只是代码对于正弦函数拟合是错误的。

确认这是我的数据集:

-200 183966
-192 189734
-184 195724
-176 201663
-168 207557
-160 213278
-152 219000
-144 224677
-136 229500
-128 236024
-120 241968
-112 247787
-104 252963
-96 257491
-88 261967
-80 267373
-72 273494
-64 278599
-56 281476
-48 282610
-40 283097
-32 283839
-24 284971
-16 286169
-8  287164
0   287968
8   288561
16  288626
24  288107
32  286967
40  285132
48  282828
56  279847
64  276296
72  272299
80  268080
88  263564
96  258926
104 254052
112 248894
120 243694
128 238177
136 232665
144 227143
152 221959
160 216874
168 211678
176 206540
184 201537
192 196748
200 192091

抱歉,我是 Matlab 新手。 先谢谢你了

matlab least-squares nonlinear-optimization non-linear-regression
1个回答
0
投票

你的代码上线出错了

zx = x(yz .* circshift(yz,[0 1]) <= 0);

yz
是一个列向量,因此
circshift
在水平方向上将其加 1 根本不会执行任何操作。

[0 1]
更改为
[1 0]
可以使您的代码正确运行:

s =

   1.0e+05 *

    0.6986
    0.0061
   -0.0000
    2.1975
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.