exponenta event banner

fillgaps

Заполнение пробелов с помощью авторегрессивного моделирования

Описание

пример

y = fillgaps(x) заменяет любой NaNs присутствует в сигнале x с оценками, экстраполированными из прямых и обратных авторегрессионных соответствий оставшихся выборок. Если x является матрицей, то функция обрабатывает каждый столбец как независимый канал.

пример

y = fillgaps(x,maxlen) указывает максимальное количество выборок для использования в оценке. Используйте этот аргумент, когда сигнал недостаточно хорошо характеризуется в диапазоне одним авторегрессионным процессом.

пример

y = fillgaps(x,maxlen,order) определяет порядок авторегрессионной модели, используемой для восстановления промежутков.

пример

fillgaps(___) без выходных аргументов строит графики исходных выборок и восстановленного сигнала. Этот синтаксис принимает любые входные аргументы из предыдущих синтаксисов.

Примеры

свернуть все

Загрузите речевой сигнал, дискретизированный при Fs = 7418 Гц. Файл содержит запись женского голоса, говорящего слово «MATLAB ®». Воспроизвести звук.

load mtlb

% To hear, type soundsc(mtlb,Fs)

Смоделировать ситуацию, в которой шумный канал передачи безвозвратно повреждает части сигнала. Вводите промежутки случайной длины примерно через каждые 500 выборок. Сбросьте генератор случайных чисел для воспроизводимых результатов.

rng default

gn = 3;

mt = mtlb;

gl = randi([300 600],gn,1);

for kj = 1:gn
    mt(kj*1000+randi(100)+(1:gl(kj))) = NaN;
end

Постройте график исходных и поврежденных сигналов. Смещение поврежденного сигнала для удобства отображения. Воспроизвести сигнал с зазорами.

plot([mtlb mt+4])
legend('Original','Corrupted')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Corrupted.

% To hear, type soundsc(mt,Fs)

Реконструируйте сигнал с помощью авторегрессионного процесса. Использовать fillgaps с настройками по умолчанию. Постройте график исходных и восстановленных сигналов, снова используя смещение. Воспроизведение восстановленного сигнала.

lb = fillgaps(mt);

plot([mtlb lb+4])
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

% To hear, type soundsc(lb,Fs)

Загрузите файл, содержащий измерения глубины пресс-формы, используемой для чеканки копейки США. Данные, взятые в Национальном институте стандартов и технологий, отбираются по сети 128 на 128.

load penny

Нарисуйте контурный график с 25 контурными линиями медного цвета.

nc = 25;

contour(P,nc)
colormap copper
axis ij square

Figure contains an axes. The axes contains an object of type contour.

Введите в данные четыре пробела 10 на 10. Нарисуйте контурный график поврежденного сигнала.

P(50:60,80:90) = NaN;
P(100:110,20:30) = NaN;
P(100:110,100:110) = NaN;
P(20:30,110:120) = NaN;

contour(P,nc)
colormap copper
axis ij square

Figure contains an axes. The axes contains an object of type contour.

Использовать fillgaps для восстановления данных, рассматривая каждый столбец как независимый канал. Укажите авторегрессионную модель 8-го порядка, экстраполированную из 30 образцов на каждом конце. Нарисуйте контурный график реконструкции.

q = fillgaps(P,30,8);

contour(q,nc)
colormap copper
axis ij square

Figure contains an axes. The axes contains an object of type contour.

Создайте функцию, состоящую из суммы двух синусоид и кривой Лоренца. Функция дискретизируется при 200 Гц в течение 2 секунд. Постройте график результата.

x = -1:0.005:1;

f = 1./(1+10*x.^2)+sin(2*pi*3*x)/10+cos(25*pi*x)/10;

plot(x,f)

Figure contains an axes. The axes contains an object of type line.

Вставить промежутки с интервалами (-0,8, -0,6), (-0,2,0,1) и (0,4,0,7).

h = f;

h(x>-0.8 & x<-0.6) = NaN;
h(x>-0.2 & x< 0.1) = NaN;
h(x> 0.4 & x< 0.7) = NaN;

Заполните пробелы с помощью настроек по умолчанию fillgaps. Постройте график исходных и реконструированных функций.

y = fillgaps(h);

plot(x,f,'.',x,y)
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

Повторите вычисления, но теперь укажите максимальную длину последовательности прогнозирования, равную 3 выборкам, и порядок модели, равный 1. Постройте график исходных и реконструированных функций. На самом простом, fillgaps выполняет линейную аппроксимацию.

y = fillgaps(h,3,1);

plot(x,f,'.',x,y)
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

Укажите максимальную длину последовательности прогнозирования, равную 80 выборкам, и порядок модели, равный 40. Постройте график исходных и реконструированных функций.

y = fillgaps(h,80,40);

plot(x,f,'.',x,y)
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

Измените порядок модели на 70. Постройте график исходных и реконструированных функций.

y = fillgaps(h,80,70);

plot(x,f,'.',x,y)
legend('Original','Reconstructed')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed.

Реконструкция несовершенна, потому что очень высокие порядки моделей часто имеют проблемы с конечной точностью.

Генерация многоканального сигнала, состоящего из двух экземпляров частотной частоты, дискретизированной на частоте 1 кГц в течение 1 секунды. Частота чирпа равна нулю через 0,3 секунды и линейно увеличивается до конечного значения 40 Гц. Каждый экземпляр имеет разное значение DC.

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
r = chirp(t-0.3,0,0.7,40);
f = 1.1;
q = [r-f;r+f]';

Введите промежутки в сигнал. Один из зазоров покрывает область низких частот, а другой - область высоких частот.

gap = (460:720);
q(gap-300,1) = NaN;
q(gap+200,2) = NaN;

Заполните промежутки с помощью параметров по умолчанию. Постройте график восстановленных сигналов.

y = fillgaps(q);

plot(t,y)

Figure contains an axes. The axes contains 2 objects of type line.

Заполните пробелы, подгоняя авторегрессивные модели 14-го порядка к сигналу. Ограничьте модели 15 образцами на конце каждого промежутка. Использовать функциональные возможности fillgaps для построения графика реконструкций.

fillgaps(q,15,14)

Figure contains an axes. The axes contains 4 objects of type line.

Увеличьте число выборок для использования в оценке до 150. Увеличьте заказ модели до 140.

fillgaps(q,150,140)

Figure contains an axes. The axes contains 4 objects of type line.

Входные аргументы

свернуть все

Входной сигнал, заданный как вектор или матрица. Если x является матрицей, то её столбцы обрабатываются как независимые каналы. x содержит NaNs для представления отсутствующих выборок.

Пример: cos(pi/4*(0:159))+reshape(ones(32,1)*[0 NaN 0 NaN 0],1,160) является одноканальным векторным сигналом, в котором отсутствует 40% его выборок.

Пример: cos(pi./[4;2]*(0:159))'+reshape(ones(64,1)*[0 NaN 0 NaN 0],160,2) - двухканальный сигнал с большими промежутками.

Типы данных: single | double
Поддержка комплексного номера: Да

Максимальная длина прогнозируемых последовательностей, заданная как положительное целое число. Если вы уйдете maxlen не указан, то fillgaps итеративно подгоняет авторегрессивные модели, используя все предыдущие точки для прямой оценки и все будущие точки для обратной оценки.

Типы данных: single | double

Порядок авторегрессионной модели, указанный как 'aic' или положительное целое число. Порядок усекается, когда order бесконечно или когда недостаточно доступных образцов. При указании order как 'aic'или оставьте его неопределенным, затем fillgaps выбирает порядок, который минимизирует информационный критерий Акаике.

Типы данных: single | double | char | string

Выходные аргументы

свернуть все

Восстановленный сигнал, возвращаемый в виде вектора или матрицы.

Ссылки

[1] Акаике, Хиротугу. «Подгонка авторегрессивных моделей для прогнозирования». Анналы Института статистической математики. Том 21, 1969, стр. 243-247.

[2] Кей, Стивен М. Современная спектральная оценка: теория и применение. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1988.

[3] Orfanidis, Sophocles J. Оптимальная обработка сигналов: введение. 2-е издание. Нью-Йорк: Макгроу-Хилл, 1996.

См. также

|

Представлен в R2016a