我创建了一个允许用户绘制多个点并插入这些点的函数。我希望函数使用这个向量计算质心:
我想我应该首先计算图形的面积(我画这个例子来说明函数输出)。我想用格林定理做到这一点
然而,由于我是MATLAB的初学者,我一直坚持如何实现这个公式以找到质心。我也不确定如何获取数据,因为到目前为止我的输出只是点的x和y坐标。
function draw
fig = figure();
hax = axes('Parent', fig);
axis(hax, 'manual')
[x,y] = getpts();
M = [x y]
T = cumsum(sqrt([0,diff(x')].^2 + [0,diff(y')].^2));
T_i = linspace(T(1),T(end),1000);
X_i = interp1(T,x',T_i,'cubic');
Y_i = interp1(T,y',T_i,'cubic');
plot(x,y,'b.',X_i,Y_i,'r-')
end
答案 0 :(得分:1)
2D坐标系的质心应该是插值x坐标和y坐标的mean
。插值应该为您提供均匀间隔的坐标,您可以利用这些坐标。所以只需添加到您现有的功能:
CenterOfMass= [mean(X_i),mean(Y_i)]
plot(x,y,'b.',X_i,Y_i,'r-')
hold on
plot(CenterOfMass(1),CenterOfMass(2),'ro')
假设所有点的权重相等,应该给你质心。