dist=[1:100]; % distance
Matlabでループを使わずに効率的に書く方法はありますか?
% conc. is concentration of size 1x100
conc=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.990000000000000 0.980000000000000 0.970000000000000 0.950000000000000 0.920000000000000 0.890000000000000 0.850000000000000 0.820000000000000 0.790000000000000 0.750000000000000 0.710000000000000 0.680000000000000 0.640000000000000 0.600000000000000 0.560000000000000 0.520000000000000 0.480000000000000 0.440000000000000 0.400000000000000 0.360000000000000 0.310000000000000 0.270000000000000 0.230000000000000 0.180000000000000 0.140000000000000 0.100000000000000 0.0700000000000000 0.0400000000000000 0.0200000000000000 0.0100000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
私はconc
に0.16の濃度値(または可能な最も近い値)に対応するインデックスおよび0.84(または可能な最も近い値)を見つけたいです。私はそれらのインデックスでdist
を見つけるためにそのインデックスを使用します。注意すべき点の1つは、conc
の値が、サイズ100のベクトルの非線形の関係で1から0に減少していることです。私たちはfind()
を使用できると知っていますが、私はそれがどのようにして何をしたいのかには分かりません。
可能であれば、ループを使わずに効率的にやりたいと思っています。これは集中のためのベクトルがたくさんあり、コードにはすでに多くのループがあるからです。ありがとう。
恐ろしい!あなたはその単純なアルゴリズムで頭の爪を打つ。 – Pupil
+1ニース。参考までに、私はベンチマークを伴うまともなMコードのbinsearchを持っています。ベンチマークでは、あなたの方法はビンサーチを数千要素まで上回ります。 (minはマルチスレッドであるためマシンに依存している可能性があります) –
BTWは、 'min(abs(conc - 0.16) 'で得られる実際の値に加えて、出力に' i'インデックスがどのように含まれているか)) '?私の理解によれば、私は 'x'だけを得たはずです。 – Pupil