情况如下:
我必须使用数组,表示一个正域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
ACTUALLY EXSIST的值r
。
我真正想要的是获得一个新向量,该向量z
为的每个值分配最接近的值y
。
可能会使用其他完全不同的解决方案,因此我更愿意理解为什么该解决方案不起作用以及如何使它起作用。
谢谢
您的问题不是很清楚。如果我理解正确,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句