2011-12-12 4 views
1

두 공간 데이터 벡터 (각 요소는 약 2000 개의 요소)가 있습니다. 하나는 다른 하나의 convolved 버전입니다. 나는 그러한 회선을 만들어 낼 커널을 결정하려고 노력하고있다. 출력 및 입력 벡터의 푸리에 변환 비율에 대한 역 푸리에 변환을 찾아서이 작업을 수행 할 수 있음을 알고 있습니다. 실제로, 내가 이것을 할 때, 나는 예상했던 모양을 어느 정도 얻었습니다. 그러나 실제로 커널 벡터는 점의 약 1/5 (~ 300-400) 만 사용했을 때 두 입력 벡터와 동일한 차원을가집니다. 내가 올바른 모양을하지만 잘못된 점을 얻고 있다는 사실은 내가 ifft와 fft 함수를 꽤 올바르게 사용하지 않는다고 생각하게 만든다. 이 일이 자연스럽게 일어나는 것처럼 나는 옳은 일을 실제로하고있는 것처럼 보입니다. 지금 나는 단순히하고있다.matlab에서 회선 커널 찾기

FTInput = fft(in); 
FtOutput = fft(out); 
kernel = ifft(FtOutput./FTInput). 

정확하고 출력 벡터를 올바르게 해석 할 수 있습니까? 아니면 작업을 지나치게 단순화 했나요? 나는 그것이 후자라고 확신한다, 나는 단지 어디에 있는지 모른다. 당신은 제대로 일을하고있다

감사

+0

dsp.stackexchange.com에서 질문 할 수 있습니다. 이것은 시스템 식별 문제입니다. 두 가지 문제가 있습니다. 여기서 취하는 접근법은 데이터와 동일한 길이의 FIR 필터로 시스템을 모델링합니다. 이는 좋은 모델 일 수도 있고 그렇지 않을 수도 있습니다. 입력 및 출력 신호가 모두 아날로그 변환기에서 디지털화되어 잡음으로 인해 손상된 경우 잡음은 응답에 편향되는 경향이 있습니다. – mtrw

답변

2

, 이것은 버그가 아닙니다.

클린 및 컨벌루션 데이터를 제공하는 컨볼 루션 필터를 추정하는 문제는 매우 어렵습니다. "멋진"데이터가 주어지면 올바른 모양을 얻을 수 있지만 회선 필터의 진정한 지원을 검색하면 자연스럽게 발생하지 않습니다.

+0

사실 이것은 실제로 제가하고있는 일에 약간 접선입니다. 십자가 수표에 더 가깝습니다. 그것은 아마도 내가 결코 교차하지 않으려 고 시도하는 측정치만큼 좋지 않을 것이라고 생각합니다. – Bowler

2

내가 당신의 '문제' '당신의 푸리에에 나눔으로써

을 무시하는 별도의 회선에 필요한 고유의 패딩에서 오는 생각, 당신은 당신의 회선이 공간에서 순환 패딩되었다 가정 (또는 당신의 컨볼 루션은 푸리에의 곱셈에 의해 만들어졌으며, 둘 다 동일합니다). 그러나 컨볼 루션이 공간 영역에서 계산 된 경우, 제로 패딩이 가장 많이 사용되었습니다.

s=[1 2 3 4 5] //signal 

f=[0 1 2 1 0] //filter 

s0=s *conv0* f=[4 8 12 16 14] //convolution with zero padding in spatial domain, truncated to signal length 
sc=s *convc* f=[9 8 12 16 15] //convolution with cyclic padding in spatial domain, truncated to signal length 

S,S0,Sc, the ffts of s,s0,sc 

approx0=ifft(S0./S)=[-0.08 1.12 2.72 -0.08 -0.08] 

approxc=ifft(Sc./S)=[0 1 2 1 0]