Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我使用MATLAB的voronoin来判断单元之间的连接,并且我想将此函数转换为Python。
当我使用Python的scipy.spatial.Voronoi时,输出有所不同。例如,如下面的代码所示,我为MATLAB和Python使用了相同的输入。 MATLAB: seed = [ 17.746 -0.37283 -0.75523; 6.1704 1.3404 7.0341; -7.7211 5.4282 4.5016; 5.8014 2.1252 -6.2491; -16.047 -2.8472 -0.024795; -2.2967 -6.7334 0.60707] [vvern_mat, vceln_mat] = voronoin(seed); Python: import numpy as np from scipy.spatial import Voronoi seed = np.array([[ 17.746 , -0.37283 , -0.75523 ], [ 6.1704 , 1.3404 , 7.0341 ], [ -7.7211 , 5.4282 , 4.5016 ], [ 5.8014 , 2.1252 , -6.2491 ], [-16.047 , -2.8472 , -0.024795], [ -2.2967 , -6.7334 , 0.60707 ]]) vor = Voronoi(kariseed) vvern_py = vor.vertices vceln_py = vor.regions 输出如下。 vvern_mat = Inf Inf Inf -6.9386 1.7980 -7.7861 -15.9902 -20.8031 50.1840 29.5016 106.3690 5.9214 8.6816 -6.5899 -0.1741 -0.2027 2.1210 0.5874 vceln_mat = 1 4 5 1 3 4 5 6 1 2 3 4 6 1 2 4 5 6 1 2 3 1 2 3 5 6 vvern_py = array([[ -6.93864391, 1.79801934, -7.78610533], [-15.9902125 , -20.80310202, 50.1840397 ], [ 29.501584 , 106.36899584, 5.92137852], [ 8.68156407, -6.58985621, -0.17410448], [ -0.20266123, 2.12100225, 0.58735065]]) vceln_py = [[], [-1, 0, 2, 3, 4], [-1, 2, 3], [-1, 0, 1], [-1, 0, 1, 2, 4], [-1, 1, 2, 3, 4], [-1, 0, 1, 3, 4]] 当您专注于vceln时,您会注意到MATLAB和Python之间的值是相同的,因为可以通过在vceln_mat中添加两个来获得vceln_mat。但是,行顺序不同,并且我很难将vceln_py转换为vceln_mat。 我以为可以通过将MATLAB的Qhull选项应用于Python来解决此问题,但无法获得相同的输出。 (关于voronoin的选项: https ://jp.mathworks.com/help/matlab/ref/voronoin.html ? lang = en#bqurvsm-1)如果有人可以解决此问题,我将不胜感激。 更多&回答... |
![]() |
![]() |