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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    , R* n5 y/ W, {6 Z同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。) c* E( I2 F: q3 L1 X
    同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:/ z, h) X  {& U% [/ ^
    ??? Error using==> mtimes
    " R  I3 o1 g& E8 c( s7 q" cInner matrixdimensions must agree.( z  l3 w& C7 M2 W
    Error in ==>evalincaller at 143 ~; w( n" `1 A/ u& m
    r =evalin('caller',a);. l2 _# f1 w6 n: G
    Error in ==>sym.eval at 337 L* y/ _# `7 f7 U$ y4 g
    r =evalin('caller',['evalincaller(''' sym2str(a) ''')']);4 `& M% Y; w. I5 h. Q
    Error in ==>ColdHRBWO7 at 2471 a, f2 `( u4 A0 Z. }0 k
       plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));( u: L% E  \: l9 f4 _& ^
    经过检查,问题出在:
    - h* b  t) p+ Z- t: ?& k. 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).*besselj(1,T(kn,1).*r));
    " {" f' f0 L: T5 M1 h* _  c上。于是,我做了如下尝试:
    : g) \, u( s: P2 S* A(1)     我改成:4 G% @6 g) z/ Y* Q% Y1 S
    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));
    8 P+ W/ p* ]& u& f1 Z& \+ ]9 h在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。
    , l( y" a# s+ U: g! x(2)     我又把两个bessel之间的.*改成*:% f6 {0 k. }  \/ B2 k
    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));
    ; W. q" L9 a1 g64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”+ x# C9 w& |  q0 R; U4 }
    (3)     我又改成如下两种形式:
    1 w  f7 m# d6 ~6 H5 ZSS(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);( d# C& A. {6 w6 G
    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)
    2 Y% ?0 |& K) d) J3 q& L5 x64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”8 V/ u  s  ?& p& `' `% F

    , g6 _- i. C1 p' {! _* r出问题的程序段如下:
    ; L3 U2 D: d# U. f' }( Hsyms r z;
    8 g  \$ B, c' q& k6 ]) K( jSS = zeros(2*n+1,1);- V+ A. m; C1 n; I( B: L3 q0 `
    SS = sym(SS);- n8 T' L; r, g, z( p3 W1 K
    for kn=1:1:2*n+1
    ! J: G7 z5 \; ]/ K6 r, i* p    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));
    6 J2 |7 K5 o) Z8 ^3 i; `end
      ?3 c# [& V4 q+ ?9 x5 s%#########################谐波功率#########################;
    + |  g5 @* @$ D0 G3 F9 upower=zeros(2*n+1,1);
    ' F# j, b7 T" [) f0 cTP = 0;
    , e; |2 o" o% v3 N5 Lfor kn=1:1:2*n+1
    0 J9 Q0 h4 J& P    clear sp;* K" N( ^3 @8 K
        sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);
    ! Y& r0 {3 G5 a$ V+ P' j/ ^' W    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));
    ; \$ g( G% S4 _    TP = TP + power(kn,1);
    7 @7 U# Y8 x6 ^0 X' e& J: aend5 Z% c+ h7 m) M
    power = power/TP;
    9 V& D, P0 H3 z! Bsave power;
    3 |- X+ @3 i4 O1 E1 Cxlswrite('5-谐波功率.xls',power);: _6 u/ Q8 k/ E3 W) ~0 p0 `. |& K
    %#########################功率密度#########################;
    # w4 N5 q* F6 L& B/ m1 y& Jrx = 0:0.01:(ro-d)*1e3;
    ' ~8 D$ k% t. J) |; H4 n4 g3 g% ?r = rx*1e-3;6 }. j2 P( K/ x$ u4 S
    z = 0.5*p;
    ( j& L4 P, i+ G+ ?$ GGLMD = rx';
    8 Q4 V5 l- }& D2 f! sfigure(100);
    " x2 Q$ f* G4 a7 U9 P7 y" A+ N/ ~for kn=1:1:2*n+1
    8 A1 J% A0 p+ L/ S    clear GLMDn;
    5 K( D0 G3 I9 L* f    plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    $ r  h& B' t  ]/ A' }7 ]    hold on;
    8 f% p7 R! \# U* d* C# k    grid on;8 D8 n1 k! G. v  Y
        box on;
    5 \% t3 b( H) f' G9 }; I    xlabel('r-axis (mm)');
    + I. U# `2 f! B: v, E' _. l    ylabel('Power flux density (W/m2)');
    2 L1 H; h$ O8 C  c* r4 J    GLMDn = eval(SS(kn,1))/TP;# w; o1 v8 U* @3 k
        GLMDn = GLMDn';
    ' _. g% V" O% Y    GLMD = [GLMD,GLMDn];
    - V1 }9 }, T8 U! rend
    * p# b1 `) F8 j6 [$ E5 b' Esave GLMD;5 d  c) }3 n( _" E8 @4 l3 w& P* K, O* w7 t
    xlswrite('5-Poynting.xls',GLMD);
    ' c; x& t+ ?  m- I7 v, U. y

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 23:37 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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