只是运算比较慢2113。可以在循环5261里加一个进度条(waitbar)就知道大概还要等多4102久了。z0=quad('sin(x)',0,2*3.1415926)放在循环里,1653每次循环都算了一次数值积分,所以特别慢。另外你的程序好像还有问题,z0在程序里数值根本就没有变,得到的图也明显不对头clearclcA=[10.25,13.9,17.3,20.7,24.1,27.5,30.9,34.3]%A矩阵为8个阵元的平均半径;c=5.6e6%C为声速;li=2%ri为阵元宽度;y0=75%y0为预期聚焦深度;Ti=zeros(1,8)forn=1:8Ti(1,n)=(sqrtm(A(1,n)^2+y0^2)-y0)/c%延时Tiend[x,y]=meshgrid(0:0.1:40,60:0.1:100)%声场范围,这里取X方向0~40mm,Y方向60~100mmz=zeros(401)form=1:400waitbar(m/400)forn=1:400forp=1:8R0i=sqrtm(y0^2+A(1,p)^2)Ri=sqrtm(y(m,n)^2+A(1,p)^2)z0=quad('sin(x)',0,2*3.1415926)%z0=SmartSimpson('A(1,p)*li*exp(-j*(w/c)*(Ri-R0i))/Ri',0,2*3.1415926)z(m,n)=z(m,n)+z0%Pi=li*A(1,p)*exp((-j)*(x/c)*((sqrtm(y0^2+(0.1*(Bx-1bx))^2+A(1,p)^2-0.2*(BX-1)cosx)-R0i)/Ri=sqrtm(y0^2+(0.1*(Bx-1))^2+A(1,p)^2-0.2*(BX-1)cosx)%Ri=sqrtm(y0^2+(0.1*(Bx-1))^2+A(1,p)^2-0.2*(BX-1)cosx)endendendmesh(x,y,z),如果你看不2113到那个>>标识,同时5261左下角start旁边显示busy,同时你的CPU表示某一个线程被占4102用,你的程1653序就在跑。你的确需要耐心一点,我对我的工作站非常有信心,不过跑你这个程序还是非常耗时间的。我在用双至强@3.65GHz,跑你这个程序也很头疼。另外,你这个程序没有设计并行计算,所以只能调用系统的一个线程,如果你是多核心CPU,那么你看不到CPU占用率100%。还得多说一句,这个程序有点慢的可以了,你试试看优化一下吧??我对我的机器还是很有自信的,这个我都写了好几个留言了,你这个程序还没算完??,不是没反应,是你这个程序计算时间太长,你看左下角“开始”旁边是不是有个“busy”,说明一直在跑www.mh456.com防采集。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)