次のようなベクトルがあると仮定しましょう
x = -1:0.05:1;
ids = randperm(length(x));
x = x(ids(1:20));
x
の要素間の最大距離を慣用的な方法で計算したいと思います。の要素の可能なすべての組み合わせを繰り返すのは簡単x
ですが、MATLABの組み込み関数を使用して、クレイジーでありながら慣用的な方法でそれを行う方法があると思います。
次のようなベクトルがあると仮定しましょう
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)に配置しました。これは、1次元の最も遠い点の問題のような特殊なケースの単純な問題に対して十分に賢いです。この呼び出しはあなたのためにそれをします:
D = ipdm(x,'subset','farthest','result','struct');
もちろん、これは完全に一般的なツールであるため、上記で作成した単純なコードほど効率的ではありません。
ええと...MATLABを手元に置いておきたいのですが、それでも早朝ですが、次のようなものはどうでしょうか。
max_dist = max(x(2:end) - x(1:end-1));
これがあなたが探しているものかどうかはわかりません。