matlab程序运行不出来,我的matlab程序哪里出问题了,为什么运行无结果?出不了图?谢谢...

博客讨论了MATLAB中数值积分运算慢的问题,建议使用waitbar进行进度反馈,并指出程序可能存在的问题。文章提到,由于没有利用并行计算,导致计算时间过长。作者提供了一个涉及矩阵运算、声场模拟的代码示例,并提醒读者注意矩阵运算的类型。文章最后提到了代码优化和MATLAB的数值运算分类。
摘要由CSDN通过智能技术生成

没有错。只是运算比较慢2113。可以在循环5261里加一个进度条(waitbar)就知道大概还要等多4102久了。z0=quad('sin(x)',0,2*3.1415926);放在循环里,1653每次循环都算了一次数值积分,所以特别慢。另外你的程序好像还有问题,z0在程序里数值根本就没有变,得到的图也明显不对头clear;clc;A=[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);for n=1:8Ti(1,n)=(sqrtm(A(1,n)^2+y0^2)-y0)/c;%延时Ti;end[x,y]=meshgrid(0:0.1:40,60:0.1:100);%声场范围,这里取X方向0~40mm,Y方向60~100mm;z=zeros(401);for m=1:400;waitbar(m/400); for n=1:400 for p=1:8 R0i=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) end endend mesh(x,y,z);,如果你看不2113到那个>>标识,同时5261左下角start旁边显示busy,同时你的CPU表示某一个线程被占4102用,你的程1653序就在跑。你的确需要耐心一点,我对我的工作站非常有信心,不过跑你这个程序还是非常耗时间的。我在用双至强@3.65GHz,跑你这个程序也很头疼。另外,你这个程序没有设计并行计算,所以只能调用系统的一个线程,如果你是多核心CPU,那么你看不到CPU占用率100%。 还得多说一句,这个程序有点慢的可以了,你试试看优化一下吧……我对我的机器还是很有自信的,这个我都写了好几个留言了,你这个程序还没算完……,不是没反应,是你这个程序计算时间太长,你看左下角“开始”旁边是不是有个“busy”,说明一直在跑www.mh456.com防采集。

matlab的数值运算分为三2113种:①矩阵一一对5261应4102运算(矩阵每个位置对应的地方做相同运算,比1653如[1 2]./[3 4] 这叫点除)②值运算③矩阵运算你注意到没,你的运算是第一种。而当除法(或者其他运算符也一样)左右两边都是矩阵(1xN)的时候,要用点除:t=0:0.5:400; E=(-1.8211493173039+t)./(-0.761615638979534-0.0363464946617634*t.^2)+13.9096844667938;T=t;figure; plot(T,E);grid

clear x_t=28; x_0=0; y_0=0; y_t=0; x_n=0:100; y_n=x_n; R_ref=sqrt((x_0-x_t).^2+(y_0-y_t).^2); R_n=sqrt((x_n-x_t).^2+(y_n-y_t).^2); d=R_n-R_ref; plot(x_n,d) grid on axis([0,100,-30,50]) xlabel('x axis'), ylabel('Distance differe

t=0:0.5:400;

你这个是被调用的函数,不需要显示结果,想显示就设置一个x值,调用一下,或者取消后面的分号,可以看下面的例子 function mian h1=10 f13=integral(@(x) f1(x,h1), 0, 10); end function [f]=f1(x,h1) f=(x/h1).^4; end

E=(-1.8211493173039+t)/(-0.761615638979534-0.0363464946617634*t.^2)+13.9096844667938;

c=medfilt2(b,[3 3],'zeros'); 到这里就报错了。medfilt2的输入应该是二位矩阵图像,而b现在是三维的,也就是rgb图像 需要在它之前之前转换一下: b=rgb2gray(b); 就成功了。如图:

T=t;

figure;

是你没有让他输出 ,把第一句改为function [x,fval]=optga。 输出为: Optimization terminated: average change in the fitness value less than options.TolFun and constraint violation is less than options.TolCon. x = 0.8122 12.3122 fv

plot(T,E);

Hwnd = Plugin.Window.GetKeyFocusWnd() Delay 2000 t1=now:t2=now:sj1=0.5:sj2=60 Rem abcc Delay 20 If DateDiff("s",t1,now)>=sj1 Delay 10 Call Plugin.Bkgnd.KeyPress(Hwnd, 83) Delay 10 t1=now End If If DateDiff("s",t2,now)>=sj2 Dela

grid on%%grid 后面2113要加on

运行后5261显示的4102图为:1653

6a399cdee345622d9a908adbb617935c.png

E行最后的;去掉在运行即可显示计算结果。

内容来自www.mh456.com请勿采集。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值