MATLABのベクトルの要素間の最大距離を計算する
-
20-09-2019 - |
質問
ベクトルがあると仮定しましょう
x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));
の要素間の最大距離を計算したい x
いくつかの慣用的な方法で。可能なすべての組み合わせを繰り返すだけで簡単です x
の要素ですが、Matlabの組み込み関数でそれを行う方法があるが、狂ったが慣用的な方法でそれを行う方法があると感じています。
解決
どうですか
max_dist = max(x) - min(x)
?
他のヒント
ベクターの最大要素と最小要素の違いを意味しますか?もしそうなら、このようなことはうまくいきます:
max(x) - min(x)
そうしないと、質問を誤解しました。
これは、1つの次元で作業しているため、単純な距離計算です。本当にその点は、1つの次元で最大距離に落ちるポイントは、常に2つの可能なポイントの1つです。したがって、必要なのは、リストから最小値と最大値をつかみ、問題のポイントから遠く離れていることを確認することだけです。したがって、xの数値が実数であると仮定すると、これは機能します。
xmin = min(x);
xmax = max(x);
maxdistance = max(x - xmin,xmax - x);
別の方法として、しばらく前にファイル交換に一般的なインターポイント距離計算ツールを配置しました (IPDM). 。 1D最先端の問題のような特別なケースの単純な問題に十分賢いです。この呼び出しはあなたのためにそれをします:
D = ipdm(x,'subset','farthest','result','struct');
もちろん、完全に一般的なツールであるため、上記で書いた単純なコードほど効率的ではありません。
うーん...私の手にマトラブを持ちたいと思っていますが、それはまだ早朝ですが、次のようなものはどうですか
max_dist = max(x(2:end) - x(1:end-1));
これがあなたが探しているものかどうかはわかりません。
所属していません StackOverflow