Mit bsxfun
und min
in den Sinn kommt:
[~,result] = min(bsxfun(@gt, y(:), x(:).'), [], 2)
Sie Vorteil der Rundfunk nehmen können, wo Sie zwei 2D-Matrizen mit y
dupliziert werden über die Spalten erstellen und x
über die Zeilen dupliziert werden. Ich nehme die gegenüber Problem, wo für jeden Wert von y
, finden wir die erste Stelle, die kleinste ist. Das Ergebnis würde Ihnen somit die Lösung für jeden Wert in y
geben. Wohlgemerkt, ich hätte das unter Verwendung von max
angegangen und die Vergleichsoperation umgekehrt, aber ich mag diese Art besser.
Beispiel Run
>> x = [1 3 5 7 9 11 13 15]
x =
1 3 5 7 9 11 13 15
>> y = [3 4 5 9 10 11]
y =
3 4 5 9 10 11
>> [~,result] = min(bsxfun(@gt, y(:), x(:).'), [], 2)
result =
2
3
3
5
6
6
Minor Hinweis
Ich habe das Gefühl, Sie gehen diese für eine lineare Interpolation verwenden :)
Ja, Sie haben Recht. Vielen Dank. – sisaman
Kein Problem. Ich habe ein passendes Duplikat für dich markiert, da ich jetzt weiß, was dein Endziel ist. Viel Glück! – rayryeng