【总结】卷积的三种算法
例子:h(t)=10*exp(-20*t)*sin(20*pi*t)
f(t)=5*sin(10*pi*t)
f(t)取三个周期的点,h(t)取点数为f(t)取点数的两倍
前期工作:
N=1024;
T=0.1;
delt=T/N;
t1=0:delt:(6*N-1)*delt;
t2=0:delt:(3*N-1)*delt; %3 cycles of ft%
lt1=length(t1);
lt2=length(t2);
leng=lt1+lt2-1;
ht=10*exp(-20*t1).*sin(20*pi*t1);
htt=;
ft=5*sin(20*pi*t2);
ftt=;
方法一:FFT算法
H=fft(htt);
F=fft(ftt);
figure;
plot(htt);
figure;
plot(ftt);
X=H.*F;
x=ifft(X);
figure;
plot(x,'b');
方法二:公式算法
y=zeros(1,leng);
for i=1:leng
temp=0;
for j=1:leng
if i>=j
temp=temp+htt(j).*ftt(i+1-j);
else
break;
end
end
y(i)=temp;
end
hold on;
plot(y,'r--');
方法三:Matlab自带的conv
FT=conv(ht,ft);
hold on;
plot(FT,'g--');
希望能对新手有帮助,同时也感谢之前各位前辈给予的帮助。
我觉得你的总结没有还要深入
建议你分别加tic,toc命令来考察一下三个算法的执行时间,可以加深你对算法执行效率优劣的判断。你会发现,第二种算法执行速度最慢,所以应该尽量避免使用循环。
最重要的是分析比较算法。
希望对你有所帮助。 原帖由 daren007 于 2008-11-5 08:46 发表 http://www.chinavib.com/forum/images/common/back.gif
建议你分别加tic,toc命令来考察一下三个算法的执行时间,可以加深你对算法执行效率优劣的判断。
你会发现,第二种算法执行速度最慢,所以应该尽量避免使用循环。
最重要的是分析比较算法。
希望对你有所帮助。
感谢前辈指点!
希望以后多给予批评指正
[ 本帖最后由 jww100 于 2008-11-5 09:16 编辑 ]
页:
[1]