悬赏 15 个论坛币 未解决
n=20;
e=normrnd(0,0.1,n,1);
d_mean=10+e;
a=randsample(500,n)/(2*pi); %角度[0,2*pi]
x=2+d*cos(a);
y=3+d*sin(a);
A=[x y];
cvx_begin
variables x0 y0
minimize sum((sqrt((A(:,1)-x0).^2+(A(:,2)-y0).^2)-d_mean).^2)
cvx_end
前面是编数据的过程,问题是假设有一个位置点(x0,y0),我已知20个点的坐标和估算出的每个点到未知点的平均距离d_mean。
对于未知的(x0,y0),距离真实值是d=sqrt((x-x0)^2+(y-y0)^2),SSE=(d-d_mean)^2,这里用cvx,min(SSE)来估算(x0,y0)
第一部分是makeup数据,A存储了所有已知点的坐标,方便验证我取了d_mean=10+normrnd。
cvx部分报错,如下:
错误使用 cvx/sqrt (line 61)
Disciplined convex programming error:
Illegal operation: sqrt( {convex} ).
出错 minimize (line 14)
x = evalin( 'caller', sprintf( '%s ', varargin{:} ) );
求大神帮忙解决
虽然强行cvx_end也有结果,但有报错。