0

一致を見つけるために、データ (X 座標と Y 座標) のリストを含むベクトルを 100 個のベクトル (それぞれ類似しているが同じ XY 座標は持たない) の配列と比較したいと考えています。

各ベクトルのデータ サイズの範囲 (10 ~ 20 コード) は、異なるサイズの行列を照合するときに問題を引き起こします。

したがって、一致させるために、異なるサイズのベクトルとして使用されない正確なデータに一致する matchfeatures を使用しました。

だから私は作った(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

重複した質問のリンクは、最初の問題を解決するはずです。2番目の問題について:

...これが機能し、ベクトル内のいくつかの値がこの範囲内にある場合でも、それらがすべて一致しない限り一致しませんか? 結果の大部分を取得するにはどうすればよいですか?

論理配列 (指定された範囲内にある要素に対応する位置に 1 があり、それ以外の位置に 0 がある) を取得したら、それを好みに合わせて操作できます。

現在の形式では、ifステートメントはすべての要素がtrue(論理 '1') の場合にのみ分岐します。テストされた式がベクトル (つまり、配列) である可能性があることがわかっている場合は、次の操作を実行できます。

  • コマンドを使用anyして、配列内の少なくとも 1 つの要素が であるかどうかを確認します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 に答える