马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
例子:
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=[ht,zeros(1,(leng-lt1))];
ft=5*sin(20*pi*t2);
ftt=[ft,zeros(1,(leng-lt2))];
方法一: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--');
希望能对新手有帮助,同时也感谢之前各位前辈给予的帮助。 |