質問

ベクトルがあると仮定しましょう

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));

これがあなたが探しているものかどうかはわかりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top