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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    8 J" l, I9 ^9 m
    同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。
    * l# B: Z8 r6 \( [+ y7 t  _$ j同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:9 o: r: X$ E, A8 f
    ??? Error using==> mtimes
    + @+ ?) j+ {7 R) `/ Y/ sInner matrixdimensions must agree.: k1 @1 T4 R- j% c) A
    Error in ==>evalincaller at 14$ F( R9 c7 g4 T: [' d3 D
    r =evalin('caller',a);1 W3 j, r0 [$ Q
    Error in ==>sym.eval at 33
      r* h- ^$ p  x" G9 J9 S  a' dr =evalin('caller',['evalincaller(''' sym2str(a) ''')']);$ g& r6 a4 z5 M2 T4 K, {5 v) M
    Error in ==>ColdHRBWO7 at 247: b3 z  C' _' Q: n! M% c) y" R' s
       plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    . z# V' Y; r9 Z8 G经过检查,问题出在:& ]7 C+ J/ f$ f8 q, s! Z: 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).*besselj(1,T(kn,1).*r));
    0 v+ E( z- ^+ |5 R* G上。于是,我做了如下尝试:
    : S6 {: E& [& W2 O4 f7 K: z8 ?(1)     我改成:
    0 s& Q* J# u9 vSS(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));: L. f: L* k% ]7 u# R( j
    在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。
      w, d# M: y  ^: o1 B- Y' r6 Q! N(2)     我又把两个bessel之间的.*改成*:
    3 `" g6 E) @: A( x9 tSS(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));
    . C0 d9 S3 o" U( u6 g2 s; Q64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”
    5 u3 K: A0 B6 {+ d, d(3)     我又改成如下两种形式:
    3 r7 T$ e- Z7 B0 d8 U$ ?5 h2 `2 n6 qSS(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);
    4 X$ S6 z% j6 k3 P8 ?, C7 e) ASS(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( H% d$ w6 j- n& P2 z
    64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”6 _6 u; @5 f/ e2 w7 Q
    % |: e7 v; a3 t; B7 I
    出问题的程序段如下:
    2 R( P( q8 T/ ?syms r z;
    / H6 [( ?6 a' N: ?' V7 n  ~SS = zeros(2*n+1,1);
    ! x/ u' y8 F+ \2 rSS = sym(SS);
    , e. q: G: K8 E" ofor kn=1:1:2*n+1- E* [1 W% A/ v( 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));
    - f; x% d) g* Y# W7 E1 eend' U( Z- c! ?- Q: j
    %#########################谐波功率#########################;
    & B' {/ y/ i2 q' B' l+ @power=zeros(2*n+1,1);6 q; w7 B5 M/ e
    TP = 0;- `. t% o: ^0 n; b  v
    for kn=1:1:2*n+1" J1 d" _, j; V& J
        clear sp;
    ) v* q" U6 [9 O# B, N6 ~3 I    sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);( m( E0 l0 P  q+ 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));
    " o; [3 C$ s% T; v0 r    TP = TP + power(kn,1);) w; v/ {1 q4 g# x. ]  @
    end* V% Y" U, P% }# r) z
    power = power/TP;
    3 H- n8 e& p' Dsave power;/ v: `7 h3 {( G$ p% E7 O
    xlswrite('5-谐波功率.xls',power);3 n9 h- o) K: [3 r" T6 K  ^
    %#########################功率密度#########################;' w5 d6 ~2 i. F" C  V
    rx = 0:0.01:(ro-d)*1e3;
    ' n8 l4 V( p* `  M4 er = rx*1e-3;
    , w2 L! z" L# y% b9 [" d5 Wz = 0.5*p;1 |0 k& }9 V; W) F% l8 {; h) ^" K
    GLMD = rx';
    ! n0 s9 u4 c5 K( ~. n% k( j9 w; mfigure(100);
    , `) O2 e8 z* W* zfor kn=1:1:2*n+1
    . Q% A2 J/ j$ l8 e% p    clear GLMDn;
    7 o+ M- X6 z5 C, r    plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    " [1 K6 a( ^4 G& W2 w    hold on;
    & _+ p: ~7 L1 Y' b8 }0 v9 |    grid on;
    6 @: Z3 ^6 Q7 u8 L    box on;8 I3 n9 ^, L) r5 X- R: Q3 Y
        xlabel('r-axis (mm)');
    % G7 |, ]4 w, j1 c4 u; T) s- Y    ylabel('Power flux density (W/m2)');
    2 r3 X! ^4 I* s7 {6 t0 r6 Q3 y/ B    GLMDn = eval(SS(kn,1))/TP;
    8 Y" d! |/ V3 E6 y% C    GLMDn = GLMDn';$ ^! l& u3 h/ Z0 J& U
        GLMD = [GLMD,GLMDn];
    - x  |: V) x" M' O) N8 k" Bend+ `+ x' D" m' f) x: i2 n
    save GLMD;
    $ z" K3 P3 }: ]; W/ l/ M+ nxlswrite('5-Poynting.xls',GLMD);- f& L  d% n' d2 j

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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