数学上定义的渐开线曲线的一部分,可以通过参数r,改变,x_0, y_0——应该安装在测量经验数据。由于计算时间不是关键,我使用蛮力方法计算所有测量的点和一个有限数目的点之间的距离用来描述渐开线定义的数学。由此一个错误(的距离),应该用于计算目标函数。错误年代Fehlerberechnung_Kreisevolvente.m计算:
函数
[S] = Fehlerberechnung_Kreisevolvente (r, a x_0 y_0)
x = [1.56 1.54 1.49 1.43 1.36 2.29 1.22 - 1.15 1.10 - 1.05);
%测量数据
y = [-0.85 -0.68 -0.52 -0.38 -0.27 -0.18 -0.11 - -0.06 -0.03 - -0.01);
%测量数据
t =(0: -0.01: -π/ 2);
X_t = x_0 + r。* (cos (t) +(一)。* sin (t));
%的数学定义渐开线
Y_t = y_0 + r。*(罪(t) -(一)。* cos (t));
%的数学定义渐开线
图
持有
在
情节(X_t Y_t);
散射(x, y,
“+”
);
轴
平等的
;
p = [x;y];
%使矩阵的测量数据
P_t = [X_t;Y_t]”;
%矩阵渐开线
%计算所有距离
为
i = 1:长度(p)
为
j = 1:长度(P_t)
dist (i, j) =√(p (i, 1) -P_t (j, 1)) ^ 2 + ((p (i, 2) -P_t (j, 2)) ^ 2));
% Abstande绝对伏特加
% dist (i, j) = ((p (i, 1) -P_t (j, 1)) ^ 2 + ((p (i, 2) -P_t (j, 2)) ^ 2));% Abstande quadriert
结束
结束
M = min(经销,[],2);
%找到最短的距离的测量渐开线点
S = (M)总和;
%总结al最短的距离提供错误的年代
结束
然后我想用
选择= fmincon (@ (S) Fehlerberechnung_Kreisevolvente (r, a x_0 y_0), (2, 0, 0, 0), [], [])
为r,并找到最优值,从,y_0改变大小、旋转和渐开线的位置。然而,我得到的消息“初始点是一个局部最小值,满足约束条件。”,不能是正确的。
似乎没有错误消息和迭代执行绘制数据但没有改变。我也将从= 0;y_0 = 0;r = 2;= 0;事先。
现在我的问题是:是fmincon错误的工具(可能因为它不能计算梯度)还是说错话的语法(我已经试过很多不同的变化)?