使用特殊顺序在数组中查找数字

时间:2016-10-18 03:34:30

标签: matlab vectorization

下面是两个数组的例子(一边是奇数,另一边是偶数的特殊排序)我有一些给定的length

两个例子:

9   7   5   3   1   2   4   6   8

11  9   7   5   3   1   2   4   6   8   10

对于某些值z,我想找到值所在的列。我写的MATLAB代码:

if z == 1
   column = ceil(length/2);   
elseif logical(mod(z,2))
   column = ceil(length/2) - (z-1)/2;
else
   column = ceil(length/2) + z/2;
end

对大多数情况来说,这是正确的。另外,MATLAB中是否有优雅的单行程可以做到这一点?

1 个答案:

答案 0 :(得分:3)

你可以从数组中减去你要查找的值,并找到它在零的位置(在数组和/或整数中存在的确切值的情况下)或找到它小于某个容差的位置值。

对于整数:

a = [1 2 3; 4 5 6; 7 8 9];
z = 6;
[row column] = find((a-z) == 0)

我意识到以下代码可能不是很有用,但它会在值z的容差范围内找到值:

[row column] = find(abs(a-z) < tolerance)

这样做你想要的吗?