3

次のようなベクトルがあると仮定しましょう

x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));

xの要素間の最大距離を慣用的な方法で計算したいと思います。の要素の可能なすべての組み合わせを繰り返すのは簡単xですが、MATLABの組み込み関数を使用して、クレイジーでありながら慣用的な方法でそれを行う方法があると思います。

4

4 に答える 4

7

どうですか

max_dist = max(x) - min(x)

于 2010-03-16T08:12:39.560 に答える
2

ベクトルの最大要素と最小要素の違いを意味しますか?そうした場合、次のようなものが機能します。

max(x) - min(x)

そうでなければ、私はその質問を誤解しました。

于 2010-03-16T08:13:50.463 に答える
2

これは、1次元で作業しているため、単純なものですが、ポイント間距離の計算です。実際、1次元で最大距離にあるその点は、常に2つの可能な点のうちの1つです。したがって、必要なのは、リストから最小値と最大値を取得し、問題のポイントからどちらが離れているかを確認することだけです。したがって、xの数値が実数であると仮定すると、これは機能します。

xmin = min(x);
xmax = max(x);
maxdistance = max(x - xmin,xmax - x);

別の方法として、少し前に、一般的なポイント間距離計算ツールをファイル交換(IPDM)に配置しました。これは、1次元の最も遠い点の問題のような特殊なケースの単純な問題に対して十分に賢いです。この呼び出しはあなたのためにそれをします:

D = ipdm(x,'subset','farthest','result','struct');

もちろん、これは完全に一般的なツールであるため、上記で作成した単純なコードほど効率的ではありません。

于 2010-03-16T10:52:26.077 に答える
1

ええと...MATLABを手元に置いておきたいのですが、それでも早朝ですが、次のようなものはどうでしょうか。

max_dist = max(x(2:end) - x(1:end-1));

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

于 2010-03-16T07:48:04.550 に答える