MATLAB中运用傅里叶逆变换将频域转换在时域内 10
代码比较乱,梳理一下:
m=60;K=1.7*10^8;C=3.625*10^4;
Ll=0.625;E=2.10*10^11;I=3.04*10^(-5);
wl=60*pi;
v=40000/3600;
syms f0 ;
H=i*(wl-2*pi*f0)*Ll/v;
k=K+i*C*(2*pi*f0);
W=k*exp(H)/E/I;A=(((2*pi*f0)^2)*m/E/I)^(1/4);B=1/v/[E*I*((wl-2*pi*f0)/v)^4-m*((2*pi*f0)^2)];
D=[exp(i*A*Ll)-exp(H),exp(-A*Ll)-exp(H),exp(-i*A*Ll)-exp(H),exp(A*Ll)-exp(H);......
i*A*exp(i*A*Ll)-i*A*exp(H),-A*exp(-A*Ll)+A*exp(H),-i*A*exp(-i*A*Ll)+i*A*exp(H),A*exp(A*Ll)-A*exp(H);......
-(A^2)*exp(i*A*Ll)+(A^2)*exp(H),(A^2)*exp(-A*Ll)-(A^2)*exp(H),-(A^2)*exp(-i*A*Ll)+(A^2)*exp(H),(A^2)*exp(A*Ll)-(A^2)*exp(H);......
-i*(A^3)*exp(i*A*Ll)+i*(A^3)*exp(H)-W,-(A^3)*exp(-A*Ll)+(A^3)*exp(H)-W,i*(A^3)*exp(-i*A*Ll)-i*(A^3)*exp(H)-W,(A^3)*exp(A*Ll)-(A^3)*exp(H)-W];
S=[0,0,0,B*W]';c=D\S;x=0.3125;F=[exp(i*A*x),exp(-A*x),exp(-i*A*x),exp(A*x)]';
Q=c'*F+B*exp(i*(wl-2*pi*f0)*x/v);
nl=34;R=Q*exp(i*(wl-2*pi*f0)*nl*Ll/v);
f=eval(['@(f0)',vectorize(R)]);
x=1:1:500;
y=f(x);
ytime=ifft(y,500);
ytimemagx=real(ytime);
ti=[0:length(ytime)-1]/500;
plot(ti,ytimemagx);
axis([0 1 -1.5*10^(-10) 1.5*10^(-10)]);
set(0,'defaultfigurecolor','w');
xlabel('时间/s')
ylabel('位移/m')
--------------运行结果
你好,你发现这个程序的错误了吗?为什么时间只能是1秒,实际峰值应该出现在1.9秒时,你能帮我解答下吗?非常感谢!