MATLAB의 지수 커널 (k)과 함께 두 개의 스파이크 (Spike라고 함)가 포함 된 시계열을 컨볼루션하고 싶습니다. convolved response "calcium1"을 호출하십시오. 커널과 디콘 볼 루션 (deconvolution)을 사용하여 원래의 스파이크 ("reconSpike") 데이터를 복구하려고합니다. 다음 코드를 사용하고 있습니다.MATLAB의 deconv() 함수는 conv() 함수를 반전하지 않습니다.
k1=zeros(1,5000);
k1(1:1000)=(1.1.^((1:1000)/100)-(1.1^0.01))/((1.1^10)-1.1^0.01);
k1(1001:5000)=exp(-((1001:5000)-1001)/1000);
k1(1)=k1(2);
spike = zeros(100000,1);
spike(1000)=1;
spike(1100)=1;
calcium1=conv(k1, spike);
reconSpike1=deconv(calcium1, k1);
문제 reconSpike의 끝에서, I 원본 데이터 아니었다 매우 큰 진폭 높은 파도의 덩어리를 얻을 수 있다는 것이다. 누구나 왜 고쳐야하는지 알고 있습니까?
감사합니다.
나는 자유가 시간 [0 : 5000] 밖에서 스파이크를 일으키기를 원하기 때문에 나는 그것을 다르게 만들었다. 예를 들어, t = 6000에서 스파이크를 원한다면 그러나 5000보다 큰 모든 값이 0이기 때문에 나는 왜이 문제가 있는지 확신하지 못합니다. 아마도 k1의 길이를 늘리고 모두 0으로 설정하면 해결할 수 있습니다. – jfeng92
예 그걸로 갈 것입니다. – Dan
불행하게도, k1의 길이를 100000으로 늘리는 것이 효과가 없으며 여전히 이러한 파도가 발생합니다. 아마도 이것은 deconv 함수에 내재 된 결함입니다. 어떤 대안을 생각해 볼 수 있습니까? – jfeng92