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

不知道怎样利用matlab进行分组运算,哪位大神给指导一下吧

[复制链接]
  • TA的每日心情

    2019-11-19 15:29
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
    ; r5 k' H+ p/ l如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
    + }' x( d8 ^  _* b+ l# d本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢!

    目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组)

    ps:本人使用的是Matlab r2018a,运行环境的macos


    " a# N9 l) Q# P$ R  w+ ^


    ; S3 A* X9 m7 [" A6 ?$ Y
    . m$ ?( l& ^( k3 D/ G x = [4.1441    0* x( |7 C1 ^1 l1 X6 l2 h2 S
    4.4684  0( h8 C7 k; n2 m4 u+ U
    5.7308  0.0025 a/ C% B0 {! ~* L9 C
    9.4417  0.0042' p$ d# c$ e- |* ?$ C
    11.6335 0.0059& w6 x3 @0 x  F  Y: v
    13.4882 0.00731 C) p2 D  M$ v9 |+ t9 @) ]- I3 i
    14.247  0.0078
    9 E+ W( `/ j0 e+ S$ s8 j& Q/ }14.6688 0.008
    % l8 ^. p- X, Y+ p$ a. C2 @6 i13.7427 0.0068' ]7 c5 g' }5 u9 E4 n: U& w, a* U
    11.8059 0.0044
    % S3 L4 E1 K7 J8.6033  0.0015& u' y. V% k3 Q, o. a+ m
    5.2315  -0.0013
    $ s8 X: E9 x5 b+ R0 b( i# c1.6184  -0.0036
    . s; H2 O3 ]$ e/ A-0.8267 -0.0055! m. U/ K9 ?# [1 N
    -3.5249 -0.0076
    , i0 g& s) @0 I-5.0424 -0.00893 X  ?9 ^. Y; P. w# j4 M
    -5.97   -0.0096
    # O. V2 n2 L) ^/ T, L/ ?-5.9694 -0.0099
    % s$ w4 o5 j4 T; M0 t-5.5492 -0.0089) G+ O4 b1 C0 Y. ]
    -3.0212 -0.0062
    0 z' x7 p. D8 J* W9 e- |% G# c/ t-0.4088 -0.0035];" j3 A0 o. A. J% p
    %  p0=[1 1 1 1 1 1];
    * t, [3 M4 v0 i  X# m  p0=[0.005 0.005 0.005 0.005 0.005 0.005];
    , v  Q: t5 T( Gwarning off4 @! Z( V# [: d8 V/ n8 A; a
    F=@(p,x)p(1)*x(:,1).^2+p(2)*x(:,1).*x(:,2)+p(3)*x(:,2).^2+p(4)*x(:,1)+p(5)*x(:,2)+p(6);% b3 C4 C' I5 s" J1 ]4 U  H
    % 拟合系数,最小二乘方法
    9 n) S9 q" ?( t4 e3 J' Ip=nlinfit(x,zeros(size(x,1),1),F,p0);5 a! k5 }; p' `) _7 T4 ~
    p(1)
    9 U! i: N" Z( W/ Up(2)# U2 Z: D, ?! E" A
    p(3)
    1 w0 h7 U4 B! _7 V$ X" W1 p3 ?p(4)
    ' u  c0 q! U- j$ L. _, Z* hp(5)! y# I* c+ o% n
    p(6)
    " |- Y6 w+ Y* \# }: B$ T, X( j; _6 \. u

    / J# @; e$ ?! n& Z' n. t" _A=p(1)/p(6);# @. b$ U" }0 I0 K2 c' H9 F
    B=p(2)/p(6);! ]/ p; ~) Y) i0 E- a& }. _- a
    C=p(3)/p(6);
    " Z, L6 A/ F( \1 y4 M! w# {* YD=p(4)/p(6);
    " P( f  S) B. iE=p(5)/p(6);
    4 f* t: j" _3 |/ y; \. R" G/ V8 z1 {$ M1 t3 j+ X. r* ]  s% u- b

    / r4 j2 c; ^( E/ p! o' n* y4 ?6 D9 v%%椭圆中心7 E+ O6 h' a* B0 w' _
    X_center = (B*E-2*C*D)/(4*A*C - B^2);
    3 n. ?4 I3 @. I4 W8 W9 i+ LY_center = (B*D-2*A*E)/(4*A*C - B^2);" d: m: `; i( z9 s1 m; ]! B4 V  U
    fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);& }% F* L  x8 m& I, o" V$ F( i
    %%长短轴
    ! P7 }+ R) x6 N; z6 Da= 2*sqrt((2*A*(X_center^2)+2*C*(Y_center^2)+2*B*X_center*Y_center-2)/(A+C+sqrt(((A-C)^2+B^2))));
    & _# J( Y* v; \  Zb= 2*sqrt((2*A*(X_center^2)+2*C*(Y_center^2)+2*B*X_center*Y_center-2)/(A+C-sqrt(((A-C)^2+B^2))));
    6 y& b% W/ e1 B
      j" _! M; ]* j' T# D4 U4 M( ]( p
    - O8 T1 Q  O% \# ]: c! {%%长轴倾角* O/ s2 m( [& e0 f1 I
    q=0.5 * atan(B/(A-C));2 U0 B+ F# \* a5 c
    fprintf(' q=%g\n',q);
    " }, q$ }5 d4 b0 Y* K. Y
    ) ]* \  k* w( ~6 n* w8 r6 |, w& D+ H3 G- L' Z( z
    fprintf(' a=%g, b=%g\n',a,b);9 s9 o  d8 N! O) ^+ }2 [% _2 Z. ]
    plot(x(:,1),x(:,2),'ro');
    0 I) j3 P4 b0 B5 Z8 P7 Y. i. T& R+ e) |/ O5 g3 {$ S' M/ t+ a

    : p% f3 r4 B9 Qhold on;
    ) A  J" x* }; jxmin=min(x(:,1));
    : W- W, o# |1 y+ d+ g& kxmax=max(x(:,1));  A9 b3 A9 _% y9 m; R
    ymin=min(x(:,2));1 S4 }' b4 i8 Y% L3 y7 \- i) e' H
    ymax=max(x(:,2));
    4 ^& s4 c# h: c/ hxmid=(xmax+xmin)/2;
    5 X" E& N7 r* m- Oymid=(ymax+ymin)/2;  \& Y2 _- p! ?1 E2 l. K5 x
    stri=(xmax-xmid)*(ymax-ymid)/2;* C2 i+ {/ Q; b+ E) j% c
    S=a*b*pi;3 M  |. x+ ~2 w7 Y" P8 N. l
    z=S/4/pi/stri;, E. |2 a2 K. r% c+ |; F
    % 将数据组集到data, q, j2 s2 y! I; C5 t0 W  w6 X0 }6 n
    data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];) a6 c5 f  p5 C6 K+ Q5 ^
    % 将data切割成m*n的cell矩阵
    4 F- b8 p; m9 V9 R" v[m, n] = size(data);
    7 Z6 c* ?5 R4 F3 Z* N; c, Vdata_cell = mat2cell(data, ones(m,1), ones(n,1));   
    ! H5 R; q8 d1 Q% ~1 V% 添加变量名称  y6 B# {: Z4 j9 s3 B; ]$ K  o
    title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};
    / a2 P% n6 O0 Z6 A+ k% 将变量名称和数值组集到result, n- d- U; p& Q* i5 {
    result = [title; data_cell];
    + @& V$ Y3 F9 ]# Z% 将result写入到wind.xls文件中& F$ w' R* _( l7 G! }
    s = xlswrite('wind.xls', result);
    : G( g& Z3 t  {0 u1 g" F- E+ R, z- `2 E- d+ F' D/ F6 U8 l- c
      @9 f$ v& {9 G8 V! \& P
    % 作图: F$ X' t5 H. m6 J3 m
    %ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
    # o8 z# i. R& F/ e% j' r7 G%title('曲线拟合');0 m- M- P' K. K2 U" Y
    %legend('样本点','拟合曲线')
    1 t& |7 I. R0 x

    : b8 g# Y) z# V
    % r( ?5 F1 w% ~5 i" ?6 _" f
    7 c2 [5 Y% M- [$ w0 P5 c

    ; R+ L% F' k, Z  L# U: ]+ V) C

    : A& ?1 e0 Q, \( o
    3 A; S: h  T1 G8 l! \

    # o/ G" y: |5 f  Z

    该用户从未签到

    2#
    发表于 2019-10-8 18:35 | 只看该作者
    帮你顶一下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 16:33 , Processed in 0.234375 second(s), 26 queries , Gzip On.

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

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

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