1D 신호를 어떻게 외삽합니까?


25

1000 샘플과 같은 길이의 신호가 있습니다. 이 신호를 원래 샘플과 동일한 속도로 샘플링 된 5000 개의 샘플로 확장하고 싶습니다 (즉, 더 오랜 시간 동안 샘플을 계속 샘플링하면 신호의 상태를 예측하고 싶습니다). 신호는 함께 추가 된 여러 정현파 성분으로 구성됩니다.

처음 나에게 온 방법은 전체 FFT를 가져 와서 확장하는 것이었지만 프레임 1001에서 매우 강한 불연속을 남깁니다. 또한 피크 근처에서 스펙트럼의 일부만 사용하는 것을 고려했습니다. 신호를 다소 개선하면 위상이 올바른 것으로 보이지는 않습니다. 이 신호를 확장하는 가장 좋은 방법은 무엇입니까?

다음은 내가 원하는 것에 대한 이상적인 방법을 보여주는 MATLAB 코드입니다. 물론, 정확히 3 개의 정현파 성분이 있거나 정확한 위상과 주파수가 있다는 것을 미리 알 수 없습니다. 501 지점으로 이동할 때 기능이 연속적이고 점프가 없는지 확인하고 싶습니다

vals = 1:50;
signal = 100+5*sin(vals/3.7+.3)+3*sin(vals/1.3+.1)+2*sin(vals/34.7+.7); % This is the measured signal
% Note, the real signal will have noise and not be known exactly.
output_vals = 1:200;
output_signal = 100+5*sin(output_vals/3.7+.3)+3*sin(output_vals/1.3+.1)+2*sin(output_vals/34.7+.7); % This is the output signal

figure;
plot(output_signal);
hold all;
plot(signal);

기본적으로 녹색 선이 있으면 파란색 선을 찾고 싶습니다. 여기에 이미지 설명을 입력하십시오


3
이미지 타일링, 스카이 확장과 같은 작업 또는 다른 작업과 관련하여 이것이 있습니까? 다시 말해, 확장에서 가장자리에 "부드럽게"되는 것 외에 다른 품질 측정이 있습니까?
datageist

3
질문이 명확하지 않습니다. "확장하다"는 무슨 뜻입니까? 신호 사본을 복제 및 연결하려고합니까 (바둑판 식) 또는 5 배까지 업 샘플링하거나 5 배 더 오랫동안 녹음 하시겠습니까? 신호가 주기적입니까? 더 구체적이고 잘 정의 된 질문이 필요하다고 생각하며 달성하려는 최소한의 예가 도움이 될 것입니다.
Lorem Ipsum

1
확장은 보간을 의미합니까? 질문은 명확하지 않습니다.
Sriram

너무 많은 것들을 의미 할 수 있다는 것을 결코 깨닫지 못했습니다 ... 더 명확하게 만들려고합니다. 기본적으로 1-D 신호는 같은 속도로 샘플링하지만 더 오랜 시간 동안 샘플링하고 싶습니다.
PearsonArtPhoto

1
@endolith : 그것은 것들을 개선합니까?
PearsonArtPhoto

답변:


16

소스 자료에 따라 다음 백서에 설명 된 DCT 기반 스펙트럼 보간 방법이 유망 해 보입니다.

lk, HG, Güler S. "수정 된 DCT 합성에 기초한 신호 변환 및 보간" , Digital Signal Processing, Article in Press, 2011.

다음은 보간의 예를 보여주는 논문의 그림 중 하나입니다.

여기에 이미지 설명을 입력하십시오

손실 된 세그먼트 ( 예를 들어, 4.2. 손실 된 피치주기의 합성)의 회복에 대한 기술의 적용 은 아마도 외삽과 가장 관련이있을 것이다. 다시 말해, 기존 소스 재료의 조각을 잡고 가장자리와 선택한 임의의 세그먼트 사이에 손실 된 세그먼트가 있다고 가정 한 다음 "누락 된"부분을 "재구성"합니다 (그리고 마지막에 사용한 조각을 버릴 수도 있습니다). 소스 재료를 매끄럽게 루핑하기 위해이 기법을 더 간단하게 적용 할 수 있습니다 ( 예 : 3.1. 스펙트럼 진폭의 보간 ).


1
슬프게도 링크가 죽었습니다. 이 유료 다운로드 만 찾을 수있었습니다 .
knedlsepp

@knedlsepp 이 링크 는 페이 월 뒤에 있지 않은 채 용지를 제공하는 것으로 보입니다.
Peter K.

18

선형 예측 코딩 (또는 자동 회귀 이동 평균 이라고도 함 )이 찾고있는 것이라고 생각 합니다. LPC는 먼저 선형 모델을 시계열에 피팅하여 시계열을 추정합니다. 여기서 각 샘플은 이전 샘플의 선형 조합으로 가정됩니다. 이 모델을 기존 시계열에 맞춘 후에는 고정 (?) 전력 스펙트럼을 유지하면서 더 많은 값을 추정 할 수 있습니다.

다음은 lpcLPC 계수를 추정하는 함수를 사용하는 Matlab의 작은 예입니다 .

N = 150;    % Order of LPC auto-regressive model
P = 500;    % Number of samples in the extrapolated time series
M = 150;    % Point at which to start predicting

t = 1:P;

x = 5*sin(t/3.7+.3)+3*sin(t/1.3+.1)+2*sin(t/34.7+.7); %This is the measured signal

a = lpc(x, N);

y = zeros(1, P);

% fill in the known part of the time series
y(1:M) = x(1:M);

% in reality, you would use `filter` instead of the for-loop
for ii=(M+1):P      
    y(ii) = -sum(a(2:end) .* y((ii-1):-1:(ii-N)));
end

plot(t, x, t, y);
l = line(M*[1 1], get(gca, 'ylim'));
set(l, 'color', [0,0,0]);
legend('actual signal', 'extrapolated signal', 'start of extrapolation');

물론 실제 코드 filter에서는 LPC 계수 a를 IIR 필터로 사용 하고 알려진 시계열 값을 필터 상태에 사전로드 하여 외삽을 구현하는 데 사용합니다 . 이 같은:

% Run the initial timeseries through the filter to get the filter state 
[~, zf] = filter(-[0 a(2:end)], 1, x(1:M));     

% Now use the filter as an IIR to extrapolate
y((M+1):P) = filter([0 0], -a, zeros(1, P-M), zf); 

출력은 다음과 같습니다.

LPC 예

예측이 어떤 이유로 시간이 지남에 따라 떨어지지 만 합리적인 작업을 수행합니다.

나는 실제로 AR 모델에 대해 많이 알지 못하고 더 많은 것을 배우고 싶어합니다.

-

편집 : @china와 @Emre가 옳습니다 .Bug 방법은 LPC보다 훨씬 잘 작동하는 것으로 보입니다. 간단하게 변경하여 lpcarburg위의 코드 수익률은 다음 결과 :

Burg 방법을 사용한 외삽

코드는 여기에 있습니다 : https://gist.github.com/2843661


LPC는 실제로 AR입니다. 외삽 기의 전달 함수 가 감쇠를 일으키기 때문에 외삽 신호는 "dy off" 됩니다. H(z)=b(z)/a(z)
Emre

@Emre 외삽 법을 향상시키는 방법이 있습니까?
nibot

@chinnu가 말했듯이 쉬운 방법은 출력을 입력에 공급하는 것입니다.
Emre

2
자, 당신은 나를 MATLAB을 발사하게 만들었습니다 : P 다른 AR 추정 알고리즘을 사용하면 문제를 피할 수 있습니다. 단순히 교체 a=lpc(x,N)에 의해 a=arburg(x,N). AR 알고리즘에 대한 (건조한) 논의는 Yule-Walker가 자동 회귀 모델링에 사용되지 않아야하는 이유
Emre

1
이 작업은 약간 늦었지만 설정에 문제가 있습니다. 모형 계수를 추정 할 때 전체 시계열 x( P측정)을 lpc(또는 arburg)에 제공합니다 . 원래 질문에 따른 외삽 법의 경우, 첫 번째 M측정 에 대해서만이 추정값을 사용해야합니다 . 더 적은 시점을 제공하면 외삽이 열등하지만 여전히 잘 작동합니다.
Chris C

6

1-D '외삽 법'은 BURG의 방법을 사용하여 LP 계수를 추정함으로써 매우 간단합니다. LP 계수를 사용할 수있게되면 필터를 적용하여 시간 샘플을 쉽게 계산할 수 있습니다. Burg 's로 예측 된 샘플은 다음에 입력 시간 세그먼트의 샘플입니다.


6

신호에 주파수 성분이 거의 없다고 확신하는 경우 MUSIC 알고리즘을 사용하여 신호에 어떤 주파수가 포함되어 있는지 확인한 후 신호를 처리 할 수 ​​있습니다 . 이것이 완벽하게 작동 할 수 있는지 확실하지 않습니다.

또한 데이터가 완전히 결정론 적이므로 일종의 비선형 예측 변수를 작성하고 기존 데이터 세트를 사용하여 학습 하고 나머지를 추정 할 수 있습니다 .

일반적으로 이것은 외삽 문제입니다. Google에 푸리에 외삽 가격 과 같은 것을 원하십니까 ?


(몇 년 후) 몇 가지 주파수 성분을 찾기위한 또 다른 알고리즘은 고조파 반전 입니다.
데니스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.