Это легко сделать с умным использованием interp1
. Фокус в том, что ключевыми точками, используемыми для интерполяции, является массив, идущий от 1 до нескольких значений, как у вас в a
, который мы будем называть N
, а интерполированные ключевые точки будут линейно увеличиваться, где первая точка равна 1, последняя точка - N
, и вы равномерно разделите этот диапазон, чтобы иметь столько же очков, сколько есть в b
.
Проще говоря:
anew = interp1(1:numel(a), a, linspace(1, N, numel(b)));
linspace
формирует линейно возрастающий массив от 1 до N = numel(a)
на стольких точек, как вы хотите, которые мы определяем как общее количество элементов в b
. Это точно указывает правильные ключевые точки, которые вы хотите дать вам с пониженной дискретизацией a
, которая соответствует длине b
, хотя потребуется некоторая интерполяция. Метод интерполяции по умолчанию является линейным.
Используя входные выборки из a
вы предоставили, мы получаем:
>> anew
anew =
1.0000 2.1250 3.2500
Perfect. Большое спасибо ** rayryeng **. – Bensa
Нет проблем. Удачи! – rayryeng