MATLAB: сравнение 2 массивов разной длины
У меня есть два массива разной длины (из-за разной частоты дискретизации), которые мне нужно сравнить. Я хотел бы уменьшить размер большего массива, чтобы он соответствовал меньшему по длине, однако коэффициент не является целым числом,а десятичным.
Для примера:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
Существует ли какой-либо способ манипулировать этими массивами, чтобы они соответствовали длинам?
1 ответ:
Это легко сделать с умным использованием
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
Comments