完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。 同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下: ??? Error using==> mtimes Inner matrixdimensions must agree. Error in ==>evalincaller at 14 r =evalin('caller',a); Error in ==>sym.eval at 33 r =evalin('caller',['evalincaller(''' sym2str(a) ''')']); Error in ==>ColdHRBWO7 at 247 plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn))); 经过检查,问题出在: SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r)); 上。于是,我做了如下尝试: (1) 我改成: SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*besselj(1,T(kn,1).*r)); 在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。 (2) 我又把两个bessel之间的.*改成*: SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*besselj(1,T(kn,1).*r)*besselj(1,T(kn,1).*r)); 64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.” (3) 我又改成如下两种形式: SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*(besselj(1,T(kn,1).*r))^2); SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*(besselj(1,T(kn,1).*r)).^2) 64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.” 出问题的程序段如下: syms r z; SS = zeros(2*n+1,1); SS = sym(SS); for kn=1:1:2*n+1 SS(kn,1) =real(omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r)); end %#########################谐波功率#########################; power=zeros(2*n+1,1); TP = 0; for kn=1:1:2*n+1 clear sp; sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r); power(kn,1) =real(2*pi/p*omg*epsl*T(kn,1)*T(kn,1)*bt(kn,1)*A(kn,1)*A(kn,1)*quad2d(sp,0,0.5*p,0,Rw,'RelTol',1e-5,'MaxFunEvals',9000)); TP = TP + power(kn,1); end power = power/TP; save power; xlswrite('5-谐波功率.xls',power); %#########################功率密度#########################; rx = 0:0.01:(ro-d)*1e3; r = rx*1e-3; z = 0.5*p; GLMD = rx'; figure(100); for kn=1:1:2*n+1 clear GLMDn; plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn))); hold on; grid on; box on; xlabel('r-axis (mm)'); ylabel('Power flux density (W/m2)'); GLMDn = eval(SS(kn,1))/TP; GLMDn = GLMDn'; GLMD = [GLMD,GLMDn]; end save GLMD; xlswrite('5-Poynting.xls',GLMD); |
|
相关推荐
1个回答
|
|
原来只要把两个文件放在同一目录下,在一个M文件中直接使用另一个文件的函数就行了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1533 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1817 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2634 浏览 0 评论
2970 浏览 0 评论
4094 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 06:00 , Processed in 0.437945 second(s), Total 46, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号