Das ist einfach mit cleverer Verwendung von interp1
zu tun. Der Trick besteht darin, dass die für die Interpolation verwendeten Schlüsselpunkte ein Array von 1 bis zu so vielen Werten wie in a
sind, das wir N
nennen, und die interpolierten Schlüsselpunkte wären ein linear ansteigendes Array, wobei der erste Punkt 1 ist, der letzte Punkt ist N
und Sie teilen diesen Bereich gleichmäßig auf, um so viele Punkte wie in b
zu haben.
Einfach gesagt:
anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));
linspace
erzeugt eine linear ansteigende Anordnung 1-N = numel(a)
für so viele Punkte wie Sie wollen, die wir als die Gesamtzahl der Elemente in b
bestimmen. Dies gibt genau die richtigen Keypoints an, die Sie einer Downsampling-Version von a
geben möchten, die der Länge von b
entspricht, obwohl eine Interpolation erforderlich ist. Die Standard-Interpolationsmethode ist linear.
Mit dem Probeneingang von a
Ihnen zur Verfügung gestellt, erhalten wir:
>> anew
anew =
1.0000 2.1250 3.2500
Perfect. Vielen Dank ** rayryeng **. – Bensa
Kein Problem. Viel Glück! – rayryeng