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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x
    : |' h' J0 Y7 T3 _5 S0 n
    同一个版本7.11.0.584 (R2010b),安装在一个32位台式机上,和一个64位笔记本上,操作系统都是win7。
    " }1 {- }' X4 a/ `5 Q- o同一个.m文件,在32位台式机上运行的好好的,但是在64位笔记本上就出错了!报错如下:
    5 w" O( b) d9 N- ]; t0 T2 ^??? Error using==> mtimes
    ( ]0 ]/ u3 l' w. C* b3 SInner matrixdimensions must agree.9 g* t/ X6 z+ e' C9 n  l5 ]; `8 F
    Error in ==>evalincaller at 14
    0 N4 R1 l+ P+ x4 \! Ir =evalin('caller',a);
    3 P4 m6 J; O# CError in ==>sym.eval at 33$ W' R  _9 q* }2 A  |
    r =evalin('caller',['evalincaller(''' sym2str(a) ''')']);
    - @9 D( S5 Y) {5 \Error in ==>ColdHRBWO7 at 247
    ) M9 `3 V& x" p0 ?8 x7 H3 x" s! i   plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));
    : ^* c6 h+ o1 D% w* K% i, L经过检查,问题出在:- ~3 @2 t! u. c' E6 \7 m8 n
    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));" @% k# z% N0 {: u+ X* G( N" k
    上。于是,我做了如下尝试:
    ( n4 q( `7 E9 W9 S5 L) a. J  {(1)     我改成:7 d" t$ F5 g' C6 |" e$ u
    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));
    9 |# \+ M0 ?" H0 c8 M在64位笔记本上就不出错了。但真正的公式里面,的确需要两个bessel公式相乘。3 e$ O. ~# x( _  T- L) S' C4 K& t
    (2)     我又把两个bessel之间的.*改成*:; ~# l7 n; t  L6 V$ {: T
    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));" [) S+ d* J0 ?. X, \9 ]! X
    64位笔记本还出错!报的错误仍然是“Inner matrix dimensionsmust agree.”
    3 x# @9 |( S; f- L; |$ I2 u7 w(3)     我又改成如下两种形式:
    " r* O: o, c/ T3 iSS(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);/ ]' `+ f  L; N. `% J& r! E
    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 r, |- _* `. ^0 S) K64位笔记本继续出错,报的错误又成了:“Inputs must be a scalarand a square matrix.”; q- V! @* y0 q( b! E

    % Z) [7 o! X: K6 _出问题的程序段如下:/ O4 g/ N' V9 F
    syms r z;2 W8 a0 d9 X: g
    SS = zeros(2*n+1,1);# J- z8 {! V! _( W5 j
    SS = sym(SS);
    0 d* z. F6 A: @& S! j# f& efor kn=1:1:2*n+1! c& x# y4 H% ~# r5 O, v% \
        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));
    . O# }% O9 Z; b7 v! `end  }% M' j3 Q7 b4 K& j& M, V2 U* z
    %#########################谐波功率#########################;
    6 t3 w1 m! f* {) I2 Ipower=zeros(2*n+1,1);8 Y7 s/ a/ ~+ Z. z. s6 P' N' [
    TP = 0;
    5 ]; K8 z! p0 n5 ~' i5 q/ @/ }for kn=1:1:2*n+1' X; j0 \6 N5 e
        clear sp;: Q) r9 ?0 b/ p0 v
        sp = @(z,r)real(besselj(1,T(kn,1).*r).*besselj(1,T(kn,1).*r).*r);5 y+ w( H( c. b0 K5 D4 B# h6 j
        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));
    * L; j1 L# i; J2 u' U; [    TP = TP + power(kn,1);
    ) C$ M1 G" H1 N. Rend* @* m; @6 j% m7 H9 G: P
    power = power/TP;
    9 `* w6 E& g" Y, k& psave power;& v$ p) s9 R0 Q! `5 I6 I
    xlswrite('5-谐波功率.xls',power);
    6 d2 O# |, _: w* o%#########################功率密度#########################;7 |; T) @# c) v
    rx = 0:0.01:(ro-d)*1e3;
    " c- U( o: X( |. ]5 \5 Xr = rx*1e-3;
      D  V2 P3 |9 D* ez = 0.5*p;! t4 l0 v" Y* X# q
    GLMD = rx';
      `: _% N9 z! @/ S/ efigure(100);
    2 b$ K" P: B& P7 ~" B9 jfor kn=1:1:2*n+1; f7 ?1 j7 G2 l% ]* F& D" k
        clear GLMDn;- y- Q8 j' ~& W
        plot(rx,eval(SS(kn,1))/TP,'k','LineWidth',sqrt(abs(kn)));8 _" `4 u4 P. q! |
        hold on;
    0 x. A4 h$ P0 W6 K- [    grid on;
    & [- W: r- D# x% r- V, g2 w! }$ _3 Q$ [    box on;( U2 x& L0 t6 U# s
        xlabel('r-axis (mm)');7 Y# G, x  O2 u% \0 ^. @
        ylabel('Power flux density (W/m2)');; E" q9 }0 A% f+ S: _3 Y+ E
        GLMDn = eval(SS(kn,1))/TP;
    ; P4 H, @- c( x" |6 F( Y8 \    GLMDn = GLMDn';+ D6 J+ E7 @$ \
        GLMD = [GLMD,GLMDn];
    - M0 S7 a1 g. H& m6 |. jend. c! M) }  v; c/ ?3 s$ m
    save GLMD;: {. a& ^1 ]9 q/ f* o+ c# u1 d' u: l
    xlswrite('5-Poynting.xls',GLMD);) ~' k8 q( s8 q+ \

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-1 00:33 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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