fillgaps

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

Описание

пример

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Загрузите речевой сигнал, дискретизированный Fs=7418Hz. Файл содержит запись женского голоса, говорящего слово «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 Гц. Каждый образец имеет разное значение постоянного тока.

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] Кей, Стивен М. Современная спектральная оценка: теория и применение. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1988.

[3] Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2-е издание. Нью-Йорк: McGraw-Hill, 1996.

См. также

|

Введенный в R2016a