реклама на сайте
подробности

 
 
> Линейное предсказание, функция lpc в matlab
_aicberg
сообщение May 31 2010, 17:22
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 17-12-09
Пользователь №: 54 310



Всем привет


1)
Если я правильно понял , то с помощью линейного предсказания можно по некоторой совокупности отсчетов : определить значение следующего сигнала.

a=lpc(x)

В matlab есть функция lpc которая рассчитывает коэффициенты фильтра 'a' , подав на который белый шум(?) - на выходе получим наше 'x'

Но в helpe в примере , после расчета набора коэффициентов , фильтр возбуждался самим сигналом x ...

Код
randn('state',0);
noise = randn(50000,1);  % Normalized white Gaussian noise
x = filter(1,[1 1/2 1/3 1/4],noise);
x = x(45904:50000);

Compute the predictor coefficients, estimated signal, prediction error, and autocorrelation sequence of the prediction error:

a = lpc(x,3);
est_x = filter([0 -a(2:end)],1,x);    % Estimated signal
e = x - est_x;                        % Prediction error
[acs,lags] = xcorr(e,'coeff');   % ACS of prediction error

The prediction error, e(n), can be viewed as the output of the prediction error filter A(z) shown below, where H(z) is the optimal linear predictor, x(n) is the input signal, and is the predicted signal.

Compare the predicted signal to the original signal:

plot(1:97,x(4001:4097),1:97,est_x(4001:4097),'--');
title('Original Signal vs. LPC Estimate');
xlabel('Sample Number'); ylabel('Amplitude'); grid;
legend('Original Signal','LPC Estimate')



Но если мы используем x , что бы получить x ;в чем тогда смысл предсказания?


Пробовал подавать на вход фильтра белый шум rand() , но ничего хорошего на выходе не получается.


Проясните пожалуйста ситуацию

2)


А вообще задача вот в чем

Имеется массив y(1:N)

Необходимо имея первые N1 <N отсчетов предсказать последние (N-N1) отсчетов

Возможно ли это ? При каких соотношениях N и N1 ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
thermit
сообщение May 31 2010, 20:51
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
_aicberg:
В matlab есть функция lpc которая рассчитывает коэффициенты фильтра 'a' , подав на который белый шум(?) - на выходе получим наше 'x'


Нет. Лпс - функция, оценивающая к-ты iir-фильтра, ачх которого будет с той или иной степенью точности аппроксимировать огибающую амплитудного спектра исходного сигнала.

Цитата
Но если мы используем x , что бы получить x ;в чем тогда смысл предсказания?


Чтоб получить исходный сигнал, на вход этого фильтра надо подать разностный сигнал


Код
x=rand(1,1000)-0.5;%исходный сигнал

a=lpc(x,4);%лп-коэффициенты

r=filter(a,1,x);%разностный сигнал

y=filter(1,a,r);%синтезированный сигнал идентичный исходному


Зачем все это надо? Сжатие, спектральный анализ...


Цитата
А вообще задача вот в чем

Имеется массив y(1:N)

Необходимо имея первые N1 <N отсчетов предсказать последние (N-N1) отсчетов

Возможно ли это ? При каких соотношениях N и N1 ?


В общем случае - нет.
Нужны более сложные модели (ARIMA), да и они не очень помогут, если сигнал случайный.

Сообщение отредактировал thermit - May 31 2010, 20:55
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016