fillgaps

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

Синтаксис

y = fillgaps(x)
y = fillgaps(x,maxlen)
y = fillgaps(x,maxlen,order)
fillgaps(___)

Описание

пример

y = fillgaps(x) замены любой NaN s подарок в 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')

% To hear, type soundsc(mt,Fs)

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

lb = fillgaps(mt);

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

% To hear, type soundsc(lb,Fs)

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

load penny

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

nc = 25;

contour(P,nc)
colormap copper
axis ij square

Введите четыре 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

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

q = fillgaps(P,30,8);

contour(q,nc)
colormap copper
axis ij square

Сгенерируйте функцию, которая состоит из суммы двух синусоид и Лоренцевой кривой. Функция выбирается на уровне 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)

Вставьте разрывы с промежутками (-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)

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

y = fillgaps(h,3,1);

plot(x,f,'.',x,y)

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

y = fillgaps(h,80,40);

plot(x,f,'.',x,y)

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

y = fillgaps(h,80,70);

plot(x,f,'.',x,y)

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

Сгенерируйте многоканальный сигнал, состоящий из двух экземпляров щебета, выбранного на уровне 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)

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

fillgaps(q,15,14)

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

fillgaps(q,150,140)

Входные параметры

свернуть все

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

Пример: 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 выбирает порядок, который минимизирует критерий информации о Akaike.

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

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

свернуть все

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

Ссылки

[1] Кей, Стивен М. Современная спектральная оценка: теория и приложение. Englewood Cliffs, NJ: Prentice Hall, 1988.

[2] Orfanidis, Софокл Дж. Оптимальная обработка сигналов: введение. 2-й выпуск. Нью-Йорк: McGraw-Hill, 1996.

[3] Akaike, Hirotugu. “Соответствуя Авторегрессивным Моделям для Прогноза”. Летопись Института Статистической Математики. Издание 21, 1969, стр 243–247.

Смотрите также

|

Введенный в R2016a