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

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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

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

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

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


    " t3 X5 f" d( f; m, e

    & B3 j, T! O/ \

    ( w- E% g/ S$ s, O+ `; {2 O x = [4.1441    0
    8 v6 ?/ K- P5 \: I4.4684  0
    ) {3 J( G4 k, ~" B) b! ~2 y* w5.7308  0.002
    * V; y3 Z) Q0 [" ]8 X9.4417  0.0042( x  F6 i: `( a5 T7 o# H( p
    11.6335 0.0059
    * m. t6 o1 e$ I; f; t; z13.4882 0.0073
    2 c1 f8 ~$ R" W3 M+ `5 |14.247  0.0078: `8 r0 j5 M0 w
    14.6688 0.008
    " `) R; i% K0 d0 t9 o13.7427 0.0068+ g1 j% G: Q; [) [8 |
    11.8059 0.0044
    - K& z% z9 D: W. @/ P. y8.6033  0.00158 p3 U. O4 V  ]
    5.2315  -0.0013
    ' g; \) |+ t+ n: k, f0 _1.6184  -0.00369 H8 G% m5 O# \# |0 R+ E! |& V
    -0.8267 -0.00551 v' T( ?: o8 N9 F5 y3 S+ l
    -3.5249 -0.0076- a8 s4 k& m; T/ k$ `
    -5.0424 -0.0089
    0 x0 `6 @- C% F' q+ M9 M-5.97   -0.00964 R; V. L! j* A5 j9 Q3 h+ a4 Q4 ~& |
    -5.9694 -0.0099
    & V( O5 m3 i- \' @( N' q9 ~$ x-5.5492 -0.0089
    # P2 N# z: ]( c5 o7 O-3.0212 -0.00626 L5 ^6 w  i$ W5 a& j1 p
    -0.4088 -0.0035];
    : _/ g5 |2 z' v0 p! D7 I %  p0=[1 1 1 1 1 1];
    , r  U& r+ A2 @2 F* V, W& ^  p0=[0.005 0.005 0.005 0.005 0.005 0.005];# f4 c: ^  Z0 |5 C, H
    warning off
    3 @3 ]+ j# W/ B) u' n8 F/ xF=@(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);# p9 v+ c9 H& Q1 g( U4 M
    % 拟合系数,最小二乘方法5 _, m- ]( e% I, m! @' H
    p=nlinfit(x,zeros(size(x,1),1),F,p0);
    % T& I; K9 a2 R+ \* w) ]8 k3 j. Tp(1)
    ; d) E4 R- \- n& L# I4 Np(2)+ I+ B' H  a! G" T, Y! P! ~: }3 V
    p(3)2 X& C1 p9 Q+ Y5 F1 [
    p(4)4 T, T; I. H! M% d! C4 m
    p(5)# g6 f( [$ R, g2 K$ T
    p(6)
    8 L, H; ?% ^1 U1 d4 C: T. F5 c, X+ e/ G$ C6 {  A7 y: i2 Z) N. d$ k
    / d: t9 d& n0 j; o+ w8 J
    A=p(1)/p(6);* ^7 O$ r% ~' `4 t% M. Y
    B=p(2)/p(6);  ~4 C8 m3 G$ H$ \
    C=p(3)/p(6);, t$ l8 ~7 c& m6 z& _' o" q! T# H
    D=p(4)/p(6);% n3 D5 g8 D3 T# u  o. N7 v) q+ C9 n
    E=p(5)/p(6);+ `+ r% B4 E3 T- {$ c

    - E4 T! @; U; z4 t0 ^& g% a% T. i* i$ `' t+ X
    %%椭圆中心
    # ?; g, F) H3 W; G9 P' U2 B* TX_center = (B*E-2*C*D)/(4*A*C - B^2);/ h" m0 \9 a' |, S) e7 q* o; a
    Y_center = (B*D-2*A*E)/(4*A*C - B^2);
    : ~  D9 `* d4 ^  V6 I( ^8 Zfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
    ; e) Z' r( z8 ~/ O4 M% n%%长短轴/ E' C7 p! t, \+ P- S' |
    a= 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))));8 C0 w$ S5 n: P/ r$ `
    b= 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 C9 z, ^! X# R) M! n6 s4 f' u/ `. G  P$ {8 T! U
    4 J/ O1 k* f& L
    %%长轴倾角
    : [* ]% h' J" p! b- w$ v; M9 ?q=0.5 * atan(B/(A-C));$ f; w" q8 q3 J8 [6 R
    fprintf(' q=%g\n',q);2 x1 g. S) l- d# J

    4 L1 U9 m2 C$ H! l! i( S2 }$ U8 r2 b
    fprintf(' a=%g, b=%g\n',a,b);7 Y. ]/ Z5 l3 w% I) L2 l- H
    plot(x(:,1),x(:,2),'ro');" ?* H8 _. x6 ]0 D+ J, ^! X& \4 T
    " o% X  w2 E/ G+ |# W
    8 l' l8 e% g+ w% Z( d$ w
    hold on;
    4 _7 g0 Z% H4 c  D% Hxmin=min(x(:,1));0 C3 f' e! b; l5 N" b- K
    xmax=max(x(:,1));( y% e. t+ O, [
    ymin=min(x(:,2));
    - n- u5 q) C6 s9 j, c# l# Kymax=max(x(:,2));: p% k4 H5 x0 }3 D
    xmid=(xmax+xmin)/2;+ _5 R' t. b1 B4 Q
    ymid=(ymax+ymin)/2;
    ; e, t9 ]7 [& v7 t: o. p2 estri=(xmax-xmid)*(ymax-ymid)/2;1 s$ ]8 U; l) r5 u" P2 Y
    S=a*b*pi;- D. a6 W8 [( y6 j" D% h# m/ r1 P
    z=S/4/pi/stri;
    8 x( u$ u$ k' H+ z) G0 d# t% 将数据组集到data
    2 j. i, x& [- Tdata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];$ B3 ?$ j4 N# n  C; g$ K
    % 将data切割成m*n的cell矩阵
    ; o, h. B% [( F5 N, }4 R[m, n] = size(data);# [( ]  U8 l& z& F& x; M0 \3 J( {1 v7 l
    data_cell = mat2cell(data, ones(m,1), ones(n,1));   
    ! F/ H/ L7 o9 g7 a; Q% Y% 添加变量名称
    # N' e# [& w  E0 |, W$ J6 m& S* Wtitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};! b. s! q9 x: p8 y- i! z1 L
    % 将变量名称和数值组集到result% t8 E; d! Q2 P) a7 ?
    result = [title; data_cell];
    # u' `: t! Q) \1 i% 将result写入到wind.xls文件中
    ( M3 A0 j& a  W* m3 t* q% k+ ss = xlswrite('wind.xls', result);% h& ^  {0 b3 f

    : G+ y' _- G  e  B. h) X# V. v7 N8 h( X
    9 Z  [  L+ I# z% 作图/ i3 b" P; v! V- `' t
    %ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);8 d8 O' p8 T: _
    %title('曲线拟合');
    / B0 {# \; r3 q& w%legend('样本点','拟合曲线')
    * P9 b# I! L% N5 t( K8 [

    2 W$ A5 m0 G$ [9 ?3 j( Q, @7 e. t5 _# S
    : G/ ?# ^8 M* w3 B
    $ C; d9 b$ h* x9 X

    2 k0 h5 G5 ~* ^2 i, N6 \2 Y" S
    ' C% |5 X( ]% m7 B5 }
    ) B4 A3 T( L2 w% ~- @
    & J- C  q8 m1 O; _

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-31 01:19 , Processed in 0.156250 second(s), 26 queries , Gzip On.

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

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

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