IFFT PROBLEM NOT WORKING PROPERLY
3 次查看(过去 30 天)
显示 更早的评论
I am trying to do the inverse of some frequnecy signal back to time domain as attached. however, not matter how i tried my graph looks totolly diffrent, i just want to make sure i have use the ifft right.
clc
clear
V_max=50;
miu=40e-6;
sigma=2e-6;
Fs=10e6;
Ts=1/Fs;
dt=0:Ts:0.1-Ts;
vt=V_max*exp(-(dt-miu).^2/(2*sigma^2));
nfft=length(vt);
nfft2=2^nextpow2(nfft);
ff=fft(vt,nfft);
fff=ff(1:nfft/2);
fre=1:1:length(fff);
intens=abs(fff/nfft);
r=(330.2-177.8)/1000;
h=1.02/1000;
h_patch=0.25/1000;
a=6.35/1000/2;
I=h^3/12;
E=63e9;
E_p=E/(1-0.35^2);
D=E_p*I;
p=7600;
shear=23.33e9;
w=1:1:length(ff);
n=length(ff);
k1=((0.5*(p*I/D+p/shear)+(0.25*(p*I/D+p/shear)^2-p*p*I/D/shear+p*h*1/D./(w.^2)).^0.5).^0.5).*w;
k2=((0.5*(p*I/D+p/shear)-(0.25*(p*I/D+p/shear)^2-p*p*I/D/shear+p*h*1/D./(w.^2)).^0.5).^0.5).*w;
aa=p*I/D;
ratio=p/shear;
kkk=ifft(ff);
for i=1:1:length(ff)
vw(i)=50*(2*pi)^0.5*sigma*exp(-1i*miu*w(i)-sigma^2*w(i)*w(i)/2);
end
for i=1:1:length(ff)
gama(i)=1-ratio*((w(i)/k1(i))^2);
end
H = besselh(0,1,k1*r);
J = besselj(1,k1*a);
for j=1:1:length(ff)
% Gw(i)=(-i*pi*h^2*gama(i)*k1(i)^3*a*J(i)*H(i))/(8*D*(k1(i)^2-k2(i)^2));
Gw(j)=((-1i*pi*h*h)/(8*D))*((gama(j)*k1(j)*k1(j)*k1(j)*a*J(j)*H(j))/(k1(j)*k1(j)-k2(j)*k2(j)));
end
for i=1:1:length(ff)
result(i)=Gw(i)*ff(i);
% result2(i)=(1/2/pi)*Gw(i)*ff(i)*exp(-1i*w(i)*dt(i));
% result(i)=Gw(i)*vw(i);
end
num=1:length(ff);
vtt=ifft(result,nfft);
plot(dt,vtt/max(vtt))
xlim([0 200e-6])
% hold on
% plot(dt,result2/max(result2))
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!