clear all;
close all;
clc;
format long;
tic
%%
fs=10e9;%采样率设置
fr_int=1e3;%频率分辨率,fft时的频率分辨率,N=fs/fr_int,得到总点数,同时得到采样的总时间,N/fs
t0=40e-6;%激励持续时间
N0=ceil(fs*t0)-1;%激励点数
N=fs/fr_int;%总点数
t_total=N/fs;%采样持续时间
f_sig=433.92e6;%16.493422089129357 + 3.193299237956759i,16.8
d_t=1/fs;
k=1:N;
y=sin(f_sig*2*pi*k*d_t);%总共发射信号时间
y=[y(1:N0),zeros(1,N-N0)];%激励信号加窗,t0长度
y_f=fft(y);%对激励信号fft,获得sinc函数
length_y_f=length(y_f)/2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 等效电路模拟导纳曲线
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
R=16;L=98.501e-6;C=1.3658e-15;C0=1.5e-12;
ffr=2*pi*sqrt(L*C);
ffr=1/ffr;%谐振器谐振频率
Qr=(L/C)^(1/2)/R;%谐振器品质因数
f_left=0;
f_right=fs/2-fr_int;
fr=f_left:fr_int:(f_right);%扫频范围
hr=(L.*C.*C0.*(2*pi.*fr*i).^3+R.*C0.*C*(2*pi.*fr*i).^2+...
(C+C0)*(2*pi.*fr*i))./(L.*C.*(2*pi.*fr*i).^2+R.*C.*(2*pi.*fr*i)+1);
mm=ceil((t0)*length_y_f*fs/N)-1;%前t0时间的波形,此时还是激励信号的
mm1=ceil((t0+1e-6)*length_y_f*fs/N);%后t0时间波形,即撤掉激励后谐振器的输出,需要注意的是,实际使用中,存在切换时间,因此最初1us的信号不在计算范围之内
z0=zeros(10,10);
for kk=1:1:10;
for k=1:1:10;
z0(kk,k)=(kk+k*sqrt(-1))/10;
end
end
power_z1_m=zeros(10,10);
power_z2_m=zeros(10,10);
m_m=zeros(10,10);
mmm=zeros(1,10);
power_z1=zeros(1,10);
power_z2=zeros(1,10);
m=zeros(1,10);
for n=1:1:10;
for nn=1:1:10;
hr_z0=(1-hr.*conj(z0(n,nn)))./(1+hr.*z0(n,nn));%Y11转成S11,S11=(1-Y11*conj(z0))/(1+Y11*z0)
F_sigback=y_f(1:length_y_f).*hr_z0;%激励信号激励谐振器
F_response=ifft(F_sigback);%反傅立叶变换,得到时域波形
mmm(1,nn)=max(abs(F_response(mm-100:mm-10)));%激励末期稳定时波形的幅度
% for l=1:mm;
% power_z1(1,nn)=power_z1(1,nn)+(abs(F_response(l)))^2;%计算激励信号的能量
% end
power_z1(1,nn)=sum(abs(F_response(1:mm).^2));
% power_z2(1,nn)=sum((A>=5))
for l=mm1:length(F_response)/2;
if abs(F_response(l))>0.01;
power_z2(1,nn)=power_z2(1,nn)+(abs(F_response(l)))^2;%计算回波信号的能量
m(1,nn)=m(1,nn)+1;%截止到制定幅度时,回波信号长度
end
end
end
power_z1_m(n,:)=power_z1;
power_z2_m(n,:)=power_z2;
m_m(n,:)=m;
end
toc
运行时间很慢,需要75s才能完成,这是10*10的,如果是750*750的,则更慢了,向量化用的不好。。。。求大神优化