我试图分别从ArrayList的点添加所有x和y坐标.
public static ArrayList knots = new ArrayList<Point>();
public Point centroid() {
Point center = new Point();
for(int i=0; i<knots.size(); i++) {
????????????????????
return center;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到质心?
我花了一整天时间阅读上述MATLAB函数.即使在MathWorks网站上,我也无法在网上找到任何好的解释!
我会很感激,如果任何人都可以解释bwlabel,regionprops和centroid.如果应用于灰度图像,它们如何工作?
具体来说,它们正在下面的代码中使用.以上功能如何应用于下面的代码?
fun=@minutie; L = nlfilter(K,[3 3],fun);
%% Termination LTerm=(L==1);
figure; imshow(LTerm)
LTermLab=bwlabel(LTerm);
propTerm=regionprops(LTermLab,'Centroid');
CentroidTerm=round(cat(1,LTerm(:).Centroid));
figure; imshow(~K)
set(gcf,'position',[1 1 600 600]); hold on
plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro')
Run Code Online (Sandbox Code Playgroud) 我有很多x,y坐标,我根据它们之间的距离聚集在一起.现在我想计算每个x,y坐标簇的质心量度.有没有办法做到这一点?
我的坐标格式为:
coordinates_cluster = [[x1,x2,x3,...],[y1,y2,y3,...]]
Run Code Online (Sandbox Code Playgroud)
每个簇的最小长度为三个点,并且所有点都可以具有负x和y值.我希望有人可以帮助我.
最好,马丁
(我在Windows 7系统上使用带有canopy 1.1.1(32位)的python 2.7.)
我试图围绕质心旋转多边形,但我对公式的编码感到困惑.
float x[32];
float y[32];
float cx=0;
float cy=0;
int j,n;
printf("How many angles :")
scanf("%d" ,&n);
//get (x[j],y[j]);
for (j=0; j<n; j++){
printf("x%d : ",j+1);
scanf("%f" ,&x[j]);
printf("y%d : ",j+1);
scanf(input, "%f" ,&y[j]);
}
//find a
//find cx
//find cy
printf("The centroid of the polygon is (%f,%f)",cx,cy);
Run Code Online (Sandbox Code Playgroud)
多边形公式的质心
http://i.stack.imgur.com/qjezn.png
我需要定义一个“频谱质心”函数来分析音频文件,但我无法将数学公式转换为代码。如果有人能帮助我那就太好了,我没有主意了。
有问题的公式是:
http://en.wikipedia.org/wiki/Spectral_centroid
我已经能够通过以下方式计算信号的频谱平坦度
def spectral_flatness(x):
X_f = fft(x)
N = len(X_f)
magnitude = abs(X_f[:N/2])
sf = geom_mean(magnitude) / aritm_mean(magnitude)
return sf
Run Code Online (Sandbox Code Playgroud)
这是我如何将数学公式转换为代码的示例。我对此很陌生,所以一个小举动仍然非常具有挑战性。我找到了有关几何质心的信息,但没有找到有关光谱质心的信息。
我已经使用旧版本的Three.js很长一段时间了,所以我决定升级到最新版本(r68).我知道我会碰到一些问题,但我不希望删除geometry.computeCentroids()和.centroid属性.
我正在使用OBJMTLLoader库加载模型.这个问题是因为它不再有.computeCentroids()方法,所以我无法获取它们.我试图用其他方法计算它们,但无济于事:
我也试过使用.localToWorld(point)方法,但它们也没有用.它总是返回(0,0,0).
现在,当我点击一个网格时,我正在计算(或试图计算)它的质心:
if (mesh.centroid === undefined) {
mesh.centroid = new THREE.Vector3();
mesh.centroid = mesh.geometry.center();
console.log(mesh.centroid); }
Run Code Online (Sandbox Code Playgroud)
每当我向场景添加一个新对象(具有子网格物体)时,我也会使用它:
//desperate try to find different values for centroids
object.updateMatrix();
scene.updateMatrix();
object.updateMatrixWorld();
scene.updateMatrixWorld();
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,我试图计算的质心并不一致.它总是在console.log()中显示相同的向量,无论我点击网格的顺序.
THREE.Vector3 {x: 158.89799999999997, y: -4.115949999999998, z: 67.75310000000002, constructor: function, set: function…}
THREE.Vector3 {x: 0.000005004882780212938, y: 0.16375010757446518, z: 0.0000024658203301441972, constructor: function, set: function…}
THREE.Vector3 {x: -1.7053025658242404e-13, y: -0.0818749484539012, z: 1.1368683772161603e-13, constructor: function, set: function…}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人有类似的问题.我没有尝试过以前的three.js版本,因为我真的想升级到最新版本并保持一致.
先感谢您.
编辑:忘了提一个重要的细节.我想要WORLD坐标中的质心.
使用mrdoob的方法后,我得到了一个质心.我总是为每个网格获得相同的值,因为即使我在每个网格上使用.calculateBoundingBoxes(),这些边界也会引用主父对象.每个几何体都分配了所有对象的顶点,我假设边界框是根据这些顶点计算的,这就是为什么我为每个几何体获得相同的值.
我有一个形状文件,上传到以下路径:
https://drive.google.com/open?id=0B1ITb_7lHh1EUFVfVWc4ekRfSnc
我使用“shapefiles”包中的“read.shapefiles”函数导入了数据:
landuse<- read.shapefile("landuse")
Run Code Online (Sandbox Code Playgroud)
我现在需要提取 landuse 对象内所有形状的纬度/经度质心并将其添加到 landuse$dbf 数据帧
我尝试了两件事:
lu_df<-coordinates(landuse)
lu_df<-SpatialPoints(landuse)
Run Code Online (Sandbox Code Playgroud)
两者都给了我以下错误:
Error in coordinates(as.data.frame(obj)) :
error in evaluating the argument 'obj' in selecting a method for function 'coordinates': Error in data.frame(record = 1L, content.length = 80L, shape.type = 5L, :
arguments imply differing number of rows: 1, 4, 7
Run Code Online (Sandbox Code Playgroud)
我不确定如何进行。
我有一个 0 和 1 的 numpy 数组(512 x 512)。我想计算1 形状的质心(它们都连接在阵列中间的一个圆形斑点中)。
for i in xrange(len(array[:,0])):
for j in xrange(len(array[0,:])):
if array[i,j] == 1:
x_center += i
y_center += j
count = (aorta == 1).sum()
x_center /= count
y_center /= count
Run Code Online (Sandbox Code Playgroud)
有没有办法加快我上面的计算?我可以使用 numpy.where() 之类的吗?是否有任何 python 函数可以并行执行此操作?
我想计算矩形的质心,矩形的坐标如下:
co_ord = (601, 1006,604, 1009) ## (xmin,ymin,xmax,ymax)
Run Code Online (Sandbox Code Playgroud)
有人可以指出一个简单的方法。谢谢
我无法从 R 中的多边形获取质心。令人困惑的是,它过去可以工作,但突然停止工作了!这是一段代码:
polygon.centroids <- SpatialPointsDataFrame(gCentroid(polygon, byid = TRUE),
polygon@data, match.ID = FALSE)
Run Code Online (Sandbox Code Playgroud)
我还可以确认多边形数据的 proj4string 已经存在,如下所示:
proj4string: +proj=utm +zone=55 +south +ellps=GRS80 +units=m +no_defs
Run Code Online (Sandbox Code Playgroud)
我在执行质心代码时收到的错误消息如下:
Run Code Online (Sandbox Code Playgroud)Error in TopologyFunc(spgeom, id, byid, "rgeos_getcentroid") : no slot of name "proj4string" for this object of class "sf"
知道发生了什么事吗?如前所述,这段代码过去运行良好。
谢谢
centroid ×10
python ×3
points ×2
r ×2
2d ×1
arraylist ×1
audio ×1
c ×1
geospatial ×1
graphics ×1
image ×1
java ×1
javascript ×1
matlab ×1
numpy ×1
performance ×1
polygon ×1
python-2.7 ×1
rectangles ×1
shapefile ×1
three.js ×1