Matlab: повторная выборка неоднородного дискретизированного сигнала

#matlab #signal-processing

#matlab #обработка сигналов

Вопрос:

У меня есть 3 сигнала: 2 входа и 1 выход для химического процесса. 2 входа отбираются равномерно каждую минуту, в то время как выходные данные должны отбираться ровно каждые 30 минут, у меня они отбираются иногда каждые 40 минут или 50 и т.д…

Мой выходной сигнал заботится только о 30-минутных дискретизированных входных данных и не более того, т.Е. Каждый из входов имеет общий отклик на выход от 0 до 30 минут.

Как я могу выполнить повторную выборку всего в Matlab, чтобы оно превратилось в серию временных интервалов в 30 минут?

Ответ №1:

То, что вы хотите сделать, это интерполяция. Основным методом для этого в одном измерении является использование interp1 . Сначала прочитайте методы и решите, какой метод лучше всего соответствует вашим потребностям.

Представьте val , что это ваши точки данных и t вектор времени сбора данных. Вы можете интерполировать данные по вектору времени T следующим образом:

 t = [0 40 80 120 170 220 270];
val = rand(1, 7);
T = min(t):30:max(t);
Method = 'pchip'; % or whatever you prefer
vq = interp1(t, val, T, Method);
  

Вот как выглядит вывод, vq ,:

введите описание изображения здесь

Ответ №2:

Кажется, что это система управления процессом, вы должны использовать symulink для этого, думает:

http://es.mathworks.com/company/newsletters/articles/modeling-industrial-chemical-processes-with-matlab-and-simulink-at-hugo-petersen-gmbh.html

это учебное пособие в формате PDF для управления процессом:

http://homepages.lboro.ac.uk /~cgzkn/processcontrol/simulink4controlnewsinglepage.pdf

возвращаясь к вашему вопросу, в matlab вы могли бы использовать повторную выборку (также будьте осторожны с наложением псевдонимов сигнала), в вашем случае

y = повторная выборка (x, p, q) выполняет повторную выборку входной последовательности, x, со скоростью p / q, умноженной на исходную частоту дискретизации. Если x является матрицей, то повторная выборка обрабатывает каждый столбец x как независимый канал. повторная выборка применяет к x сглаживающий фильтр нижних частот FIR и компенсирует задержку, вносимую фильтром.

итак, у вас есть сигнал, который вам нужно передискретизировать с коэффициентом 30 fs1 / fs2 ((1/60) / (1/(60*30)) = 30, в этом случае вы могли бы сделать что-то вроде этого:

 OutputResampled = resample(outputSignal,30,1)
  

Комментарии:

1. Какое отношение Simulink имеет к вопросу …?