0

我有一个包含数据列表(X 和 Y 坐标)的向量,我想将其与 100 个向量的数组(每个向量具有相似但不相同的 XY 坐标)进行比较,以找到匹配项。

每个向量的数据大小范围(10 到 20 条线之间),这在匹配不同大小的矩阵时会导致问题。

所以为了匹配,我使用了匹配精确数据的匹配特征,这些数据不能用作不同大小的向量。

所以我做了(使用 pdist 将绳索变成距离)

threshigh = (vector1/100) * 110;
threslow = (vector1/100) * 90;

if (Vector2 <= threshigh)&&(vector2 >= threslow)   
    disp its a match
else
    not a match
end

太棒了!但是.. 我不能在向量上使用运算符,因为它们仅适用于标量。

我该如何解决这个问题?

我也想到了,即使这可行,并且向量中的某些值落在此范围之间,除非它们都匹配,否则它将不匹配?我如何只取大部分结果?

4

1 回答 1

0

重复问题的链接应该可以解决您的第一个问题。至于你的第二个问题:

...即使这有效并且向量中的某些值落在此范围内,除非它们都匹配,否则它不会匹配?我如何只取大部分结果?

一旦你有了一个逻辑数组(在指定范围内的元素对应的位置为 1,在其他位置为 0),你可以根据自己的喜好对其进行操作。

在其当前形式中,仅当所有元素都是(逻辑“1”)时,if语句才会分支。如果您知道被测试的表达式可能是一个向量(即一个数组),您可以执行以下操作:true

  • 使用any命令检查数组中是否至少有一个元素是true

    if any(...)
        %// Do something...
    end
    
  • 使用all命令检查所有元素是否为true

    if all(...)
        %// Do something...
    end
    

    all在这里使用是多余的,但它确实增强了可读性......)

  • 使用以下命令检查大多数“1” mode

    if mode(double(...))
        %// Do something...
    end
    

    mode返回数组中出现频率最高的元素,因此如果它为 '1',则if语句将分支。

于 2013-04-21T15:20:09.497 回答