2016-09-26 9 views
0

У меня есть следующие проблемы:Принесите два вектора в одной и той же длины

У меня есть два вектора данных v1 (длина N1 = 13812) и v2 (длина N2 = 60002021). Я должен привести оба вектора в одну длину N3 с использованием интерполяции bzw. понижающая дискретизация, с требованием: 2xN1.

Может кто-нибудь мне помочь? Моя идея заключалась в использовании: interp, interp1 и downsample, чтобы решить проблему. Это правильный подход?

+1

Вам просто нужно, чтобы 'interp1' или' interp2' зависел от вашего измерения –

+0

вот пример, почему вы не должны использовать interp1 для понижения уровня сигнала: t = 1: 0.01: 30; х = Sin (т); график (1: 3: 30, interp1 (t, x, 1: 3: 30), 'o-'); Оставайтесь на линии; график (t, x); hold off – serigado

ответ

0

В зависимости от вашего сигнала и частоты дискретизации, использование interp1 может оказаться неправильным. Существует resample функция, которую можно использовать, как это:

v1_resampled = resample(v1, 2, 1); 
v2_resampled = resample(v2, p, q); 

где параметры p, q в зависимости от частоты дискретизации вашего вектора v2.

Всегда проверяйте начало/конец передискретизированных векторов. Проверьте NaN и будьте осторожны, если у вас нет равноудаленной выборки.

Другой возможной альтернативой может быть использование скользящего среднего/движущегося медианного фильтра для сигнала с более высоким разрешением. Наилучший подход к передискретизации действительно зависит от типа сигнала.

+0

'resample' требует инструмента обработки сигналов. – rayryeng

 Смежные вопросы

  • Нет связанных вопросов^_^