用Matlab中的奇异函数对实验数据进行卷积

时间:2013-11-20 21:07:46

标签: matlab convolution

这可能是几行代码,但我无法弄明白...... 我需要用积分范围开始时奇异的分析函数对实验数据进行卷积运算。所以,如果我使用“conv”,它将不起作用......

我有两个实验向量,phi(time)和时间 然后想要计算T(t)

T = \int_{0}^{t}\phi \left ( t-\tau  \right )\frac{\textup{d}\tau}{\tau ^{1/2}}

所以tau = 0处的奇点使得“conv”不起作用。我一直在摆弄匿名函数并使用quadgk来处理奇点等,但是无法做任何事情。我会打赌这是一个已解决的问题,但找不到类似的东西。非常感谢任何帮助。

编辑:这样解决了:

function T = TCalc(time, power)

warning off MATLAB:quadgk:NonFiniteValue %suppress warning at the zero point

T=zeros(size(time));

for par = 1:numel(time)
    T(par) = s1(time(par));
end

function y = r1(t)
    y = interp1q(time,power,t');%notice that t is transposed! to make interp1q work.
    y = y'; 
end

function y = s1(tfin)
    y = quadgk(@(t) (r1(tfin-t))./t.^(0.5),0,tfin,'RelTol',1.e-2);
end
end

我想,这里不优雅的技巧是让Matlab认为实验数据是通过interp1传递的分析函数,并使用quadgk来容忍整合极限的奇点。 1000点矢量大约一秒钟。忽略或将tau = 0指向一个较小的值不起作用,它仍然会感知奇点,结果是错误的。

0 个答案:

没有答案