情况如下:
我必须使用数组,表示正域x
,以及另一个具有该域z
现在,对于给定的点y
,我希望在最近的位置找到z
值。为此我写了以下函数:
R0 = @(y) z(find(abs( abs(y). - r) == min(abs(abs(y). - r))))
(使用abs
代表y
的负值,因为z
是对称的)
除非y
是向量,否则这样做效果非常好。所以,如果我使用以下代码:
y = [-1:0.01:1];
R0(y);
我收到以下错误:
Error using ==
Matrix dimensions must agree.
尝试调试它,我看到find
语句返回1 * 0矩阵,因此没有。这是y
数组中r
ACTUALLY EXSIST的值。
我真正想要的是获得一个新的向量,为z
的每个值分配y
中最接近的值。
其他可能会使用完全不同的解决方案,因此我更倾向于理解为什么这个解决方案不起作用以及如何使其工作。
由于
答案 0 :(得分:1)
我假设所有r,z,y
都是行向量;
根据您提供的代码,您似乎需要z
中的值,其索引与最接近r
的{{1}}中的值的索引相同。以下代码对行向量scalar y
执行相同的操作。
y
答案 1 :(得分:1)
你的问题不是很清楚。如果我理解正确,对于y
的每个元素,您希望在z
中找到最接近的元素。
y = [1 2 3 4 5]; %// example data
z = [0 2.5 6]; %// example data
d = abs(bsxfun(@minus, y(:).', z(:))); %'// compute distance for all pairs
[~, ind] = min(d); %// index of minimizer in z for each value of y
result = z(ind);
在此示例中,
result =
0 2.5000 2.5000 2.5000 6.0000