使用object查找指定距离内的所有邻居
Idx = rangesearch(Mdl,Y,r)
Idx = rangesearch(Mdl,Y,r,名称,值)
[Idx,D] = rangesearch(___)
rangesearch
接受ExhaustiveSearcher
或KDTreeSearcher
建模对象以搜索训练数据,寻找与查询数据最近的邻居。一个ExhaustiveSearcher
模型调用穷举搜索器算法,并且KDTreeSearcher
模型定义了Kd-tree,rangesearch
用于搜索最近的邻居。
加载费雪的虹膜数据集。从数据中随机保留5个观测值作为查询数据。关注花瓣的尺寸。
负载fisheririsrng (1);%用于再现性N = size(meas,1);Idx = randsample(n,5);X = meas(~ismember(1:n,idx),3:4);培训数据Y = meas(idx,3:4);%查询数据
增长一个默认的二维Kd-tree。
MdlKDT = KDTreeSearcher(X)
MdlKDT = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [145x2 double]
MdlKDT
是一个KDTreeSearcher
模型对象。您可以使用点表示法更改其可写属性。
准备一个详尽的最近邻搜索器。
MdlES =枯竭搜索器(X)
MdlES =筋疲力尽的搜索器属性:距离:'欧几里得' DistParameter: [] X: [145x2 double]
mdl
是一个ExhaustiveSearcher
模型对象。它包含用于查找最近邻居的选项,如距离度量。
或者,你也可以种一种KD-tree或准备穷尽最近邻搜索器使用createns
.
在0.5 cm半径内的每个查询观测值对应的最近邻居索引中搜索训练数据。执行两种类型的搜索并使用默认设置。
R = 0.15;搜索半径%IdxKDT = rangesearch(MdlKDT,Y,r);IdxES =范围搜索(MdlES,Y,r);[IdxKDT idx]
ans =5x2单元阵列{1x27双}{1x27双}{[13]}{[13]}{1x27双}{1x27双}{1x2双}{1x2双}{1x0双}{1x0双}
IdxKDT
而且idx
向量的单元格数组是否对应于的下标X
在0.15厘米的范围内Y
.索引矩阵的每一行都对应一个查询观察结果。
比较两种方法的结果。
cellfun (@isequal IdxKDT idx)
ans =5x1逻辑阵列1 1 1 1 1 1
在这种情况下,结果是相同的。
绘制setosa鸢尾花的结果。
setosaIdx = strcmp(~ismember(1:n,idx)),“setosa”);XSetosa = X(setosaIdx,:);ySetosaIdx = strcmp(物种(idx),“setosa”);YSetosa = Y(ysetoaidx,:);图;情节(XSetosa (: 1) XSetosa (:, 2),“同意”);持有在;情节(YSetosa (: 1) YSetosa (:, 2),“* r”);为j = 1:sum(ySetosaIdx) c = YSetosa(j,:);circleFun = @(x1,x2)r^2 - (x1 - c(1))。²- (x2 - c(2)) ^2;ezplot (circleFun [c (1) + (1) * r c (2) + (1) * r])结束包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;标题“Setosa花瓣测量”;传奇(“观察”,查询数据的,“搜索半径”);轴平等的持有从
加载费雪的虹膜数据集。
负载fisheriris
从预测器数据中随机移除5个虹膜作为查询集。
rng (1);%用于再现性N = size(meas,1);%样本量qIdx = randsample(n,5);%查询数据的索引X = meas(~ismember(1:n,qIdx),:);Y = meas(qIdx,:);
准备一个默认的穷举最近邻搜索器。
Mdl =枯竭搜索器(X)
Mdl =筋疲力尽的搜索器属性:距离:'欧几里得' DistParameter: [] X: [145x4 double]
Mdl
是一个ExhaustiveSearcher
模型。
找到训练数据的索引(X
),在查询数据中每个点的距离不超过0.15厘米(Y
).指定距离是关于马氏度规的。
R = 1;Idx = rangesearch(Mdl,Y,r,“距离”,“mahalanobis”)
Idx =5x1单元阵列{1x15 double} {1x5 double} {1x6 double} {[84]} {[69]}
Idx {3}
ans =1×61 34 33 22 24
每一个细胞Idx
对应于一个查询数据的观察和包含X
查询数据0.15cm范围内的邻居索引向量。rangesearch
按距离升序排列索引。例如,使用马氏距离,的第二近邻Y (3:)
是: X (34)
.
加载费雪的虹膜数据集。
负载fisheriris
从预测器数据中随机移除5个虹膜作为查询集。
rng (4);%用于再现性N = size(meas,1);%样本量qIdx = randsample(n,5);%查询数据的索引X = meas(~ismember(1:n,qIdx),:);Y = meas(qIdx,:);
培育一个四维空间Kd-树使用训练数据。指定使用闵可夫斯基距离来查找最近的邻居。
Mdl = KDTreeSearcher(X);
Mdl
是一个KDTreeSearcher
模型。默认情况下,寻找最近邻居的距离度量是欧几里得度量。
找到训练数据的索引(X
),即查询数据中每个点的距离不超过0.5厘米(Y
).
R = 0.5;[Idx,D] = rangesearch(Mdl,Y,r);
Idx
而且D
是向量的五元单元数组。中的向量值Idx
索引是X
.的X
索引表示距离查询数据0.5 cm以内的观测值,Y
.D
包含与观测值相对应的距离。
3.显示查询观察结果。
Idx {3}
ans =1×2127 122
D {3}
ans =1×20.2646 - 0.4359
最近的观察Y (3:)
是X(127年:)
,即0.2646
厘米了。最接近的是X(122年:)
,即0.4359
厘米了。所有其他观测值都大于0.5
距离厘米: Y(5日)
.
Mdl
- - - - - -最近邻搜索器ExhaustiveSearcher
模型对象|KDTreeSearcher
模型对象最近邻搜索器,指定为ExhaustiveSearcher
或KDTreeSearcher
分别为模型对象。
如果Mdl
是一个ExhaustiveSearcher
模型,然后rangesearch
使用穷尽搜索搜索最近的邻居。否则,rangesearch
使用生长的Kd-树搜索最近的邻居。
Y
- - - - - -查询数据查询数据,指定为数字矩阵。
Y
是一个米——- - - - - -K矩阵。行Y
对应于观察结果(即例子),列对应于预测因子(即变量或特征)。Y
必须与存储在其中的训练数据具有相同数量的列Mdl。X
.
数据类型:单
|双
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在单引号内(' '
).您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“距离”、“闵可夫斯基”,“P”3
中查找所有观测值Mdl。X
在距离r
的每一个观察Y
,使用带有指数的闵可夫斯基距离度量3.
.
“距离”
- - - - - -距离度量Mdl。D是tance
(默认)|“cityblock”
|“欧几里得”
|“mahalanobis”
|闵可夫斯基的
|“seuclidean”
|函数处理|……距离度量用于查找训练数据到查询观察的邻居,指定为逗号分隔的对,由“距离”
和字符向量、字符串标量或函数句柄。
对于这两种最近邻搜索器,rangesearch
万博1manbetx支持这些距离度量。
价值 | 描述 |
---|---|
“chebychev” |
切比雪夫距离(最大坐标差)。 |
“cityblock” |
城市街区距离。 |
“欧几里得” |
欧氏距离。 |
闵可夫斯基的 |
闵可夫斯基距离。默认指数为2。要指定不同的指数,请使用“P” 名称-值对参数。 |
如果Mdl
是一个ExhaustiveSearcher
建模对象,然后rangesearch
也支持这些万博1manbetx距离度量。
价值 | 描述 |
---|---|
“相关” |
1减去观测值之间的样本线性相关(被视为值序列)。 |
的余弦 |
1减去观测值之间夹角的余弦(作为行向量处理)。 |
“汉明” |
汉明距离,也就是不同坐标的百分比。 |
“jaccard” |
1减去杰卡德系数,也就是非零坐标的百分比。 |
“mahalanobis” |
马氏距离,用正定协方差矩阵计算。若要更改协方差矩阵的值,请使用“浸” 名称-值对参数。 |
“seuclidean” |
标准化欧氏距离。每一行之间的坐标差Mdl。X 查询矩阵通过除以计算的标准偏差的相应元素来缩放Mdl。X .要指定另一种缩放,请使用“规模” 名称-值对参数。 |
“枪兵” |
1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。 |
如果Mdl
是一个ExhaustiveSearcher
模型对象,然后还可以通过使用为自定义距离度量指定函数句柄@
(例如,@distfun
).自定义距离函数必须:
有表格函数D2 = distfun(ZI,ZJ)
.
作为参数:
1 -K向量子
的单行Mdl。X
或Y
,在那里K列数是Mdl。X
.
一个米——- - - - - -K矩阵ZJ
包含多行Mdl。X
或Y
,在那里米为正整数。
返回一个米-by-1的距离向量D2
,在那里D2 (
观测值之间的距离是多少j
)子
而且ZJ (
.j
:)
详情请参见距离度量.
例子:“距离”,“闵可夫斯基”
“P”
- - - - - -闵可夫斯基距离度量的指数2
(默认)|积极的标量闵可夫斯基距离度量的指数,指定为逗号分隔的对,由“P”
一个正标量。这个论点只有在以下情况下才成立“距离”
是闵可夫斯基的
.
例子:“P”3
数据类型:单
|双
“浸”
- - - - - -马氏距离度量的协方差矩阵nancov (Mdl.X)
(默认)|正定矩阵马氏距离度量的协方差矩阵,指定为逗号分隔的对,由“浸”
和一个正定矩阵。浸
是一个K——- - - - - -K矩阵,K列数是Mdl。X
.如果你指定浸
不要详细说明'
距离
”、“mahalanobis”
,然后rangesearch
返回一个错误消息。
例子:“浸”,眼睛(3)
数据类型:单
|双
“规模”
- - - - - -标准化欧几里得距离度量的尺度参数值nanstd (Mdl.X)
(默认)|非负数值向量标准欧几里得距离度量的刻度参数值,指定为逗号分隔的对,由“规模”
和一个非负数值向量。规模
长度K,在那里K列数是Mdl。X
.
的相应元素,该软件在训练数据和查询数据之间缩放每个差异规模
.如果你指定规模
不要详细说明'
距离
”、“seuclidean”
,然后rangesearch
返回一个错误消息。
例子:'Scale',分位数(mml . x,0.75) -分位数(mml . x,0.25)
数据类型:单
|双
如果你指定'
距离
'
,'
浸
'
,'
P
'
,或'
规模
'
,然后Mdl。D是tance
而且Mdl。D是tParameter
不要改变值。
Idx
-最近邻居的训练数据指标训练最近邻居的数据索引,返回为数值向量的单元格数组。
Idx
是一个米——- - - - - -1
单元格数组这样的单元格j
(Idx {j}
)包含米j中观测值指标的-维向量Mdl。X
都在里面r
单位的查询观察Y (j,:)
.rangesearch
按距离升序排列向量的元素。
D
—查询数据的最近邻居距离查询数据的邻居的距离,作为数值矩阵或数值向量的单元格数组返回。
D
是一个米——- - - - - -1
单元格数组这样的单元格j
(D {j}
)包含米j-观测距离的维向量Mdl。X
是从查询中观察到的Y (j,:)
.向量的所有元素都小于r
.该函数以升序排列向量的元素。
knnsearch
找到了k(正整数)指向Mdl。X
这是k-最近的每个Y
点。相比之下,rangesearch
找到所有向内的点Mdl。X
都在距离之内r
(正标量)Y
点。
rangesearch
它的对象函数需要an吗ExhaustiveSearcher
或者一个KDTreeSearcher
建模对象、查询数据和距离。在等价条件下,rangesearch
返回相同的结果rangesearch
指定名称-值对参数时“NSMethod”、“详尽”
或“NSMethod”、“kdtree”
,分别。
使用注意事项和限制:
该表包含关于参数的注释。
论点 | 注意事项和限制 |
---|---|
Mdl |
|
“距离” |
|
名-值对参数 | 名-值对参数中的名称必须是编译时常量。例如,要允许在生成的代码中使用用户定义的闵可夫斯基距离指数,请使用include |
Idx |
生成的代码中绑定距离的排序顺序可以与MATLAB中的顺序不同®由于数值精度。 |
对于代码生成,rangesearch
使用parfor
(默认情况下)来创建在受支持的共享内存多核平台上并行运行的循环。万博1manbetx如果您的编译器不支持开放多处理(OpenMP)应用程万博1manbetx序接口或禁用OpenMP库,MATLAB编码器™将parfor
循环,为
循环。要查找受支持的编万博1manbetx译器,请参见万博1manbetx支持编译器.若要禁用OpenMP库,请指定EnableOpenMP
的属性codegen
配置对象为假
.详细信息请参见编码器。CodeConfig
.
有关代码生成示例,请参见最近邻搜索器的代码生成工作流.有关更多信息,请参阅中的主题代码生成.
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。