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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    1 @5 Y2 K8 }% U6 Q: Z7 F8 x! m同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。) c& X9 r9 O% W" D  b; P; i
    同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:4 S8 i, U, f  F7 p5 }! r
    ??? Error using==> mtimes" ]5 p3 g" E  R" g# p1 g5 _) J
    Inner matrixdimensions must agree.
    4 t# j: \* x0 y3 O) tError in ==>evalincaller at 14
    / J- F. r+ k" E# q: ]r =evalin('caller',a);
    - I8 M: A1 M* T* \  kError in ==>sym.eval at 33
    ; U+ F. }2 P" N$ rr =evalin('caller',['evalincaller(''' sym2str(a) ''')']);& h+ L  v9 k' q# ?) Q: h
    Error in ==>ColdHRBWO7 at 247& i1 s7 q9 ?8 L
       plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));+ A1 Z, o2 H& d: p' ?
    经过检查,问题出在:& A+ B$ S7 Z" z: s% l
    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));
    2 {: T* }& H# U上。于是,我做了如下尝试:
    : l0 j& D; [; b' \( I5 U' N, I* ^(1)     我改成:
    9 m" Y( i; l- x% l3 A' B; |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));/ L% o  ~& d' F8 O' \$ p0 h
    在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。
    ' I/ S+ g8 _! t% i3 T(2)     我又把两个bessel之间的.*改成*:+ Y) e  A' x7 x2 e; 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));% V5 Z# E7 O: L9 I) g, O
    64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”$ P+ E( R* A5 S5 q: M
    (3)     我又改成如下两种形式:, ?! h, M9 C/ v7 u  O* @
    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 B, ~: j" Y9 D7 C% L1 {
    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); Y9 e9 p3 t3 i6 u: j9 j( J9 D
    64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”9 j" J$ ~  \9 y4 I

    6 P' x, D& s+ w+ S3 N; l出问题的程序段如下:
      U' \4 g+ q. _- H  ksyms r z;
    , {9 u% q  f  T; b$ p( A  \/ DSS = zeros(2*n+1,1);
    ( g- E, L) P! i6 u2 TSS = sym(SS);3 k$ ?1 y. x& q: s- Z
    for kn=1:1:2*n+1( z) \/ n7 r  ^3 G# D6 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 B' B! a: R8 C' C. q
    end" ~& F8 n7 a1 }( ^. |; M6 T' Q
    %#########################谐波功率#########################;/ |' x2 W8 Q: k
    power=zeros(2*n+1,1);- O8 m- ~/ P" J& u- I; s
    TP = 0;
    / i8 L+ {. p8 Y" f0 V# j' h2 `for kn=1:1:2*n+1
    : e% S; M1 d: ^, I6 g    clear sp;
      f1 e7 g! o! {3 m8 y, N    sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);! d8 Z+ ~$ `$ e7 {  d
        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));6 ]0 Y# Z: Q+ U" D. n: E& X7 F
        TP = TP + power(kn,1);4 }" b7 d: }7 E: W, a0 U# |
    end( D- ?- |( T" M; i6 X; H
    power = power/TP;
    + i( N; t1 ^! |" F5 [save power;0 Z- Y0 s4 Y$ ^5 T1 s
    xlswrite('5-谐波功率.xls',power);
    , ~! |6 s% E1 p%#########################功率密度#########################;4 y3 D6 t) V$ C, W
    rx = 0:0.01:(ro-d)*1e3;; ~' u- ~" z$ ]1 m/ O7 @
    r = rx*1e-3;$ X+ j  k  _  X& C) `  R
    z = 0.5*p;# P4 q/ m% s0 i$ Q/ y
    GLMD = rx';
    1 W  Q5 }1 H$ F- ofigure(100);8 A( w/ T1 c. \4 v! h
    for kn=1:1:2*n+15 O* [8 k' J* R- ?5 Z6 V. x# \
        clear GLMDn;
    , n! M% Y& a6 z; x4 r2 @    plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));+ y; X- f1 |: N; B2 t1 d% z
        hold on;  u+ h+ v5 E6 R) q# n/ k5 h
        grid on;% A) Z# p9 x' {6 c' l# w
        box on;
    % b( A& O/ w9 T- [2 a6 J$ G) _    xlabel('r-axis (mm)');
      h+ R. v* B0 @. B3 h/ m    ylabel('Power flux density (W/m2)');! \4 v- X9 x- u' b  |- P
        GLMDn = eval(SS(kn,1))/TP;& {; z6 `! M1 Z& q
        GLMDn = GLMDn';
    ; |1 ^4 ]# o) X    GLMD = [GLMD,GLMDn];6 c6 P7 U2 d' A9 g
    end, s) e3 O; z9 }& M: ]7 m
    save GLMD;
    ' H# w2 ~2 [$ y, q# Y/ txlswrite('5-Poynting.xls',GLMD);
    , w, u, f2 `  a+ v" Z6 _

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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