ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

matlab的mink函数

2020-04-05 13:41:36  阅读:465  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有