找回密码
 注册
关于网站域名变更的通知
查看: 420|回复: 1
打印 上一主题 下一主题

同一个版本的matlab、同一个.m文件,为何一个顺利执行、另一个出错?

[复制链接]
  • TA的每日心情
    擦汗
    2019-11-19 15:26
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-1-8 13:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x

    9 h6 i* X3 u9 _同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。
    $ o0 ^8 z) F' ~7 i) i9 M同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:& z. a  q) l4 W( U, P% d
    ??? Error using==> mtimes
    $ c" F# r6 K& g" ?Inner matrixdimensions must agree.
    7 E" l  k: D( N; SError in ==>evalincaller at 14
    : @* v4 g& r" l* ^6 fr =evalin('caller',a);  P& @% {: f& x$ @+ Q6 K
    Error in ==>sym.eval at 33
    # O6 F3 K$ X0 Jr =evalin('caller',['evalincaller(''' sym2str(a) ''')']);
    # c6 p' o- k, qError in ==>ColdHRBWO7 at 247* V3 e8 k) ~/ m) m1 v; T9 o; _
       plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    3 A! [! p' \) H- ^! i经过检查,问题出在:( ~) w! d; d% W1 c/ [
    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 q( K% E+ D  ]- C
    上。于是,我做了如下尝试:
    $ Z7 P$ u6 Q& G/ s# c0 O(1)     我改成:/ M7 d7 E: I1 M, z
    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));
      k- a3 @0 l+ y' X在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。
    ' j3 W" ^; M' f1 f3 |/ m(2)     我又把两个bessel之间的.*改成*:7 I: d7 W6 D8 N2 J/ d
    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));5 x( M% z7 h0 b/ [$ ]$ v: b
    64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”
    7 d  ~, ~& U$ \- J* {(3)     我又改成如下两种形式:
    ) L: z& D- f( Q& p5 N6 uSS(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);" P% \6 f/ E5 w  O/ c
    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)# ?% M' \# t, ]' x% O
    64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”
    ; `7 d& s; N/ N
    1 o3 K) {; L2 Y出问题的程序段如下:! S# n) n' D" x" c
    syms r z;
    8 M. H/ n% g* X/ uSS = zeros(2*n+1,1);4 t% L4 g% T) ^1 h5 m: T9 f, {
    SS = sym(SS);
      }/ s* v) ?' z' m6 Yfor kn=1:1:2*n+1- Q. g' U# T' }5 J$ 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));! _4 M/ |) k* i/ L  R4 f7 B
    end: z8 ^- O% R% d0 g" `
    %#########################谐波功率#########################;
    * Y& A- R0 J; _. c3 opower=zeros(2*n+1,1);
    3 ~* U1 C' I# ]( l5 R. YTP = 0;2 i7 K( p9 M8 l8 n( s4 G% R' `
    for kn=1:1:2*n+1
    ; x- y7 `) r2 b8 P& a# x/ P9 S    clear sp;
    + m  L4 P" M) |" X    sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);
    2 C; N0 B3 q6 X0 M    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));
    , n% e' O- r, u* ?( B) G2 c    TP = TP + power(kn,1);
    3 ?5 _% N% V# ^end
    ! D  ^3 c4 g0 a3 x0 F& Mpower = power/TP;% q% `3 Z% m1 h* Y5 d. |' g% {: Q8 s
    save power;
    # b  ?) m! ^1 S5 u$ W2 I3 R/ J0 rxlswrite('5-谐波功率.xls',power);" e6 k, z" R/ T6 Q1 F/ T4 J2 z
    %#########################功率密度#########################;
    * _) F! `, e' w; H! ~; j. @) frx = 0:0.01:(ro-d)*1e3;
    " |1 c3 [5 ~& o7 {r = rx*1e-3;" U6 `6 @. e. t0 C6 e
    z = 0.5*p;
    5 u$ d3 s+ P: U: Z) S& k# g( ]$ yGLMD = rx';1 t2 U. e0 Q2 P/ }+ ]
    figure(100);
    # A- R" _3 T" k. Q$ Cfor kn=1:1:2*n+1
    1 Q: H; r. H, ~% {    clear GLMDn;* H1 H  ^8 w  }8 f% c: h
        plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    # H1 t( ~9 y) o4 \; P6 V1 D' H    hold on;9 `# X1 [, I0 Q  H2 E: w5 Y" s7 _
        grid on;9 k: r! F( h# R! p  _0 U
        box on;
    7 W9 D7 J1 P' D( z+ F+ _# f    xlabel('r-axis (mm)');4 n7 \' w3 T5 E$ p0 ]
        ylabel('Power flux density (W/m2)');+ o8 ]1 ~1 @# L5 y5 Q6 i) }
        GLMDn = eval(SS(kn,1))/TP;
    / p& k% e8 U0 l    GLMDn = GLMDn';+ K' s; C: ?2 B$ o% C  ]; L
        GLMD = [GLMD,GLMDn];; u0 k- P! b7 ^$ u
    end
    $ a) [; w- r) U" {' T3 Xsave GLMD;
    " B- H1 N" S' M; w" }  gxlswrite('5-Poynting.xls',GLMD);3 |5 ]  L2 T4 R5 s% h

    该用户从未签到

    2#
    发表于 2020-1-8 19:13 | 只看该作者
    我的天,把两个文件放在同一目录下,在一个M文件中就可以直接使用另一个文件的函数了啊
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-5 21:19 , Processed in 0.125000 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表