EDA365电子论坛网

标题: 同一个版本的matlab、同一个.m文件,为何一个顺利执行、另一个出错? [打印本页]

作者: littlestupid    时间: 2020-1-8 13:27
标题: 同一个版本的matlab、同一个.m文件,为何一个顺利执行、另一个出错?

6 t# O0 e9 r' }" D8 ~" p同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。" H$ K! D5 l9 H0 `) a  D" _& o8 z
同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:9 t9 z3 X$ M# p) D/ [1 y2 o% o/ s
??? Error using==> mtimes
, \3 u0 Q" p0 U4 x) V, CInner matrixdimensions must agree.( X8 e% [8 u& B. _
Error in ==>evalincaller at 14
4 V2 y: O7 X  a$ m6 D7 w7 }r =evalin('caller',a);9 r- N3 C) _, L8 F( z+ p) {
Error in ==>sym.eval at 337 y$ f& U- S, k, }
r =evalin('caller',['evalincaller(''' sym2str(a) ''')']);5 i! |1 o5 J4 {7 C& A+ Z
Error in ==>ColdHRBWO7 at 247
- `! t5 B. w  m* Q  Y% z   plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));0 }1 s) B3 [7 n. _9 y$ i: I" J
经过检查,问题出在:
3 O/ f1 O8 Z# ]3 {/ F* PSS(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));+ ]7 T+ A! M& e- b1 s
上。于是,我做了如下尝试:4 S. q- ~. k. A2 f" u2 d8 m3 N2 c) a( I& N
(1)     我改成:
! u. M. a+ S  [- bSS(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));
+ x$ J: a* S  I$ l( V, E0 n1 P2 l在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。4 i! H, L5 |- I" Z
(2)     我又把两个bessel之间的.*改成*:
+ c  }' B* f. j4 R) OSS(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));. O9 }' e) v& K
64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”
) f! ^# S/ q+ n- R, i# U(3)     我又改成如下两种形式:
1 i# Y2 P6 w' \* t+ [9 ?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);
3 j1 F! S  c/ DSS(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)! i8 c; b7 v/ s3 X
64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”
& G( E, x& k- U2 h# ]" b+ o4 f. t
出问题的程序段如下:7 Z$ R& Y6 @# v- l2 K0 C! z
syms r z;$ C6 ~/ ], @6 c5 s, d$ A6 a
SS = zeros(2*n+1,1);
9 K3 q  `$ N3 h2 ESS = sym(SS);" W$ v: C9 g& y5 E
for kn=1:1:2*n+1
/ N! D$ Z8 x, s+ f    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));
, E: X! k+ @# ]& H: @: |  [end
0 S' I1 {3 Z8 U5 F7 J%#########################谐波功率#########################;
+ |) Y5 c' X' z' Zpower=zeros(2*n+1,1);
4 J' y$ @+ l. l/ \6 j5 ~! o0 GTP = 0;
( `9 q' U. ?4 [! e, Q' m( ufor kn=1:1:2*n+1
1 [  _/ L' k  @0 N; e$ ~5 S5 A  @    clear sp;6 c' E  y- u( y! T) A" I
    sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);+ [$ D6 G# Z; `1 g% E: w! h
    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));
3 F. o0 F" w) e* n& [1 t" d    TP = TP + power(kn,1);
: x- y% i- x" g( tend  V/ g% j! l: }% o7 O2 w& ?
power = power/TP;) s- b, v) r, z3 D+ f: c3 j
save power;
0 `7 N' Z- h4 @6 t; Kxlswrite('5-谐波功率.xls',power);
3 J' u* N& W# _  _- }4 m" r0 k%#########################功率密度#########################;
3 d+ H. U# x# f, _( krx = 0:0.01:(ro-d)*1e3;  m! \+ \  P! m9 l2 |& q6 [
r = rx*1e-3;
+ E3 \9 A( E6 g# a7 l8 a4 Fz = 0.5*p;! A) p; O" g4 A( {* `  m
GLMD = rx';
) V9 ?* h/ ?1 W! }figure(100);
  {, a9 t8 F( G, K1 e6 \for kn=1:1:2*n+1
( @: P) d1 f, E. p1 ?    clear GLMDn;
$ J8 |% P+ w& n) U0 B: W* a    plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));" p4 S) s* V! i+ ]7 \4 l
    hold on;
, U" h* q( l* _1 j% N6 ]9 Q3 `2 F' M$ E! d    grid on;
5 ]/ f2 B; f8 ^& A% X% Q) I    box on;* n* q( d) B& F' o3 c
    xlabel('r-axis (mm)');5 h+ |' Q4 R2 z  s
    ylabel('Power flux density (W/m2)');
* R/ k; b3 n# p5 d4 ]+ r    GLMDn = eval(SS(kn,1))/TP;
/ ?) o4 |8 L2 L/ K9 _6 G    GLMDn = GLMDn';; o, h$ U: z) l& Z2 g
    GLMD = [GLMD,GLMDn];8 e% [( g' ~* b) B
end
9 p' b* ?0 g8 `: n" Q, X6 z  ^save GLMD;
5 _0 `) B% _2 z0 h1 oxlswrite('5-Poynting.xls',GLMD);$ X+ b" p1 o( z2 T- i

作者: ExxNEN    时间: 2020-1-8 19:13
我的天,把两个文件放在同一目录下,在一个M文件中就可以直接使用另一个文件的函数了啊




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2