[英]RMSE of (x,y) coordinates
我在笛卡爾平面中有一個坐標(X,Y)值的數據集,我想找到這些點到1個坐標(x1,y1)的RMSE。 所以基本上,(X,Y)在(x1,y1)附近,我想找到他們的RMSE。
誰能幫我,因為我不確定我做對了嗎:
我正在這樣做:
Err = Err + sqrt[(X(i) - x1)^2 + (Y(i) - y1)^2] - - - - Previous error + current error (Distance between points)
RMSE = sqrt[(1/no_Of_Points)*Err^2]
這個對嗎?
我正在MATLAB中進行此操作,因此,如果需要,可以隨時編寫代碼。
這是我的代碼:
RMSEright = 0;
countright = 0;
for i = 1:1:size(VarName1,1)
[x,y] = pol2cart(VarName2(i,1), VarName1(i,1));
if x > 0
RMSEright = RMSEright + (((featureright(1,1) - x)^2)+((featureright(1,2) - y)^2))^0.5;
countright = countright + 1;
end
end
RMSEright = ((1/countright)*RMSEright)^0.5
謝謝!
我在您的代碼中看到您有興趣測量中心x_center
右邊的點( x(1) > x_center(1)
的點x(1) > x_center(1)
。
您可以將其向量化,並避免使用循環。 令z = z = [XY];
,則z = z(z(:,1) > z_center(1), :);
然后,要計算RMSE, sqrt(mean(vecnorm(z-z_center, 2, 2).^2))
。
這是一個示例代碼:
% Center point
z_center = [1 1];
plot(z_center(1), z_center(2),'r*'); hold on;
% Data Points
X = [1.2256; 1.2931; 0.1213; 1.0387; 0.5158; 1.5895; 1.1485; 1.5914; 0.6550; 0.8026];
Y = [0.9002; 0.2724; 1.0856; 0.0871; 1.2780; 0.8944; 0.9888; 0.3219; 1.2895; 1.0577];
z = [X Y];
plot(z(:,1), z(:,2),'*');
% Select "right" points
z = z(z(:,1) > z_center(1), :);
% Compute RMSE
sqrt(mean(vecnorm(z-z_center, 2, 2).^2))
plot(z(:,1), z(:,2),'oc');
legend('center', 'points', 'right points');
它返回
ans = 0.6710
和情節
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.