本帖最后由 咯咯 于 2012-12-13 10:22 编辑
321forever 发表于 2012-12-13 04:06
那负频率是fft后,图形中得到的与原频率(左半部)对称的右半部分么?
第一幅图就是计算得到频域响应后经过ifft反变换到时域的波形,第二幅图是所加激励源的时域波形,第三幅图是激励源的频域波形。
这是激励波形的时域和频域的产生- N=4096; %%采样点数
- Fs=4096000000; %%采样频率
- k1=1;k2=1;
- for t=0:1/Fs:1e-6;
- if t<=1*1e-7
- %S_y1(k1)=1e6*10/5*t;
- S_y1(k1)=0;
- %S_y1(k1)=sin(2*pi*10000*t);
- k1=k1+1;
- end
- if t>1e-7&&t<=2.5*1e-7
- %S_y2(k2)=10-1e6/(2-0.5)*(t-5*1e-6);
- S_y2(k2)=1e7*1/(2.5-1)*(t-1e-7);
- k2=k2+1;
- % S_y2(k2)=sin(2*pi*10000*t);
- end
- if t>2.5*1e-7
- S_y2(k2)=1;
- k2=k2+1;
- end
- end
- S_y=[S_y1,S_y2]; %%%激励的时域波形
- figure(6)
- plot(0:1/Fs:1e-6,S_y);hold on;%%%画出时域波形
- figure(7)
- F_y=fft(S_y,N);%%对时域波形做FFT变换
- A_F_y=abs(F_y)/(N/2);
- A_F_y(1)=A_F_y(1)/2;
- f=([1:N]-1)*Fs/N;
- plot(f(1:N/2),A_F_y(1:N/2));%%%做出激励波形的频域图
- %plot(f(1:N),A_F_y(1:N));
- %plot(A_F_y);
- %figure(4)
- %I_F_y=1/N*conj((fft(conj(F_y))));
- %plot((f.*1/Fs)*N/Fs,ifft(F_y));
- %figure(5)
- %plot((f.*1/Fs)*N/Fs,real(I_F_y));
- for kk=1:1:(N/2)
- V_s(kk)=F_y(kk+1)/2;%%%将激励波形的频域值存到V_s中,供后面的频域计算时调用(1MHz:1Mhz:1024MHz的频域值)
- end
复制代码 下面是对频域计算后得到的频域值进行IFFT变换
f_final=2048000000;%%%频率的最大值
f_initial=1000000; %%%初始计算的频率
fs=1000000; %%%采样频率
f=f_initial:fs:f_final
f_i(k_i)=log10(f);%%%对频率计数
f_P(k_i)=f;
w=2*pi*f;
[Z_r,zp]=cable_R(f);%其中Z_r为铜芯的内阻抗矩阵,zp为屏蔽壳的内阻抗
Z_P=zp*ones(n-1);
Z_Z=Z_r+1i*w*L+Z_P;
Y_Y=1i*w*C;%%%忽略电导G
%%%%%%%%%%%%%%%%%%%%%%%%
%【5】对ZY矩阵的对角化及模态特性阻抗Zc
[Tv C_v1]=eig(Z_Z*Y_Y);%求出来的Tv矩阵为特征向量组成的矩阵,其中第n列向量为C_v矩阵中第n个对角元的特征向量
r_v1=sqrt(C_v1);%%传播常数
[Ti C_v2]=eig(Y_Y*Z_Z);
r_v2=sqrt(C_v2);%%传播常数
%模态特性阻抗Zc
Zc=(Z_Z*Ti/r_v2)/Ti;
%%%%%%%%%%%%%%%%%%%%%%%%%%
%【6】加激励源
Vs(1)=V_s(vs1);%%激励波形的频域值调用(1MHz:1MHz:1024MHz)
vs1=vs1+1;%%%%%%%%%%%%%%%
%【7】利用边界求解方程组I+和I-
Q11=(Zc+Zs)*Ti;
Q12=(Zc-Zs)*Ti;
for k=1:1:n-1
E_r_v2(k,k)=exp(r_v2(k,k)*LL);%%%正向传播
E_r_v1(k,k)=exp((-1)*r_v2(k,k)*LL);%%负向传播
end
Q21=(Zc-ZL)*Ti*E_r_v1;
Q22=(Zc+ZL)*Ti*E_r_v2;
Q(1:(n-1),1:(n-1))=Q11;
Q(n:2*(n-1),n:2*(n-1))=Q22;
Q(1:(n-1),n:2*(n-1))=Q12;
Q(n:2*(n-1),1:(n-1))=Q21;
E_S(1:(n-1))=Vs;E_S(n:2*(n-1))=VL;%%激励源
%%求解Im+和Im-
Im=inv(Q)*E_S;
%%%【8】求解z=L处37芯的响应
for k=1:1:2*(n-1)
if k<n
Im_P(k)=Im(k);
else
Im_N(k-n+1)=Im(k);
end
end
V_response=Zc*Ti*(E_r_v1*Im_P+E_r_v2*Im_N);
%%%【8.1】建立37芯的终端响应矩阵
for k=1:1:(n-1)
V_res{k}(k_i)=V_response(k);
end
k_i=k_i+1;
end
figure(1)
plot(f_i,log10(abs(V_res{1})));hold on; %%计算得到的频域响应
grid on;
%%%【9.1】对上述铜芯的频域响应转换为时域响应
V_res1_real=real(V_res{1});%%1号铜芯的实部
V_res1_imag=imag(V_res{1});%%1号铜芯的虚部
V_res1_N=conj(V_res{1});%%1号铜芯的负频率部分
while k_i>1
k_i=k_i-1;
V_res1_NC(k_j)=V_res1_N(k_i);%%V_res1_NC为重排后的负频率部分
f_N(k_j)=-f_P(k_i);%%频率负的部分重排
k_j=k_j+1;
end
U_res_1=[0,V_res{1},V_res1_NC];%%%用频域计算得到的频域响应值
t1=([1:f_final/f_initial])*1/f_final;
figure(2)
plot(t1,real(ifft(U_res_1,2048)),'r');hold on;%%%频域值的IFFT反变换 |