matlab程序运行中特别慢,程序运行很慢,怎么优化?

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的,则更慢了,向量化用的不好。。。。求大神优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值