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')

% 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)
legend('Original','Reconstructed')

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

y = fillgaps(h,3,1);

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

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

y = fillgaps(h,80,40);

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

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

y = fillgaps(h,80,70);

plot(x,f,'.',x,y)
legend('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)

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

fillgaps(q,15,14)

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

fillgaps(q,150,140)

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

свернуть все

Входной сигнал в виде вектора или матрицы. Если 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 выбирает порядок, который минимизирует критерий информации о Akaike.

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

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

свернуть все

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

Ссылки

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

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

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

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

|

Введенный в R2016a