标签:mink 个点 tag 索引 xy matlab neighbor 函数
mink函数
近期由于地统计的课程要编写克里格插值方法,会涉及到对一个坐标点求其邻域范围内最近的4个点,如何在matlab里较为快速的方式来找到最近的点呢
1. 输入
输入是各个点的坐标值
2. 输出
输出为离目标坐标点最近的四个点的序号(索引)
3. mink函数用法
B = mink(A,k) 返回 A 的 k 个最小元素。
如果 A 是向量,则 mink 返回一个向量,其中包含 A 的 k 个最小元素。
如果 A 是矩阵,则 mink 返回一个矩阵,该矩阵的列包含 A 的每一列中的 k 个最小元素。
如果 A 是多维数组,则 mink 返回大小不等于 1 的第一个维度上的 k 个最小元素。
运算维度,指定为正整数标量。默认情况下,mink 沿其大小不为 1 的第一个维度进行运算。
例如,如果 A 是矩阵,则 mink(A,k,1) 沿 A 的行进行运算,计算每一列的最小值
mink(A,k,2) 沿 A 的列进行运算,计算每一行的最小值。
[B,I] = mink(A,k) 计算 A 的 k 个最小值的索引,并在 I 中返回这些索引。
代码实例
data=[652753.64762600000 3401386.13520000000
651398.23551100000 3401243.71019000000
650757.32551100000 3397599.36602000000
650383.78438800000 3397655.75152000000
648218.09904800000 3400244.31901000000
649289.90303600000 3399735.42808000000
648800.23382300000 3396647.88481000000
647428.12291900000 3395735.58427000000
647470.40602700000 3398478.01034000000
648293.25574800000 3394792.44465000000
];
xy=[6.0087e+05,3.3647e+06];
%计算样点离xy距离平方
num_neighbor=4;%邻近点数
D2=(data(:,1)-xy(1)).^2+(data(:,2)-xy(2)).^2;
[D,tag]=mink(D2,num_neighbor);%tag表示最近的4个点D表示对应的距离平方
Dc_neighbor=sqrt(D);
tag_neighbor=tag;%最近的4个点的索引
总结
如果原始点数较多,那么此方法是比较快能够搜索到最近的k个点的方法,如果对计算距离后的距离列向量进行排序sort函数操作再来取前四个对应得索引,无疑会增加时间复杂度。第一次推送博客,如有错误之处还请勘正!
参考链接
https://ww2.mathworks.cn/help/matlab/ref/mink.html
标签:mink,个点,tag,索引,xy,matlab,neighbor,函数 来源: https://blog.csdn.net/qq_44589327/article/details/105311882
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。