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

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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。8 D5 {9 f) s4 f" L$ b" e. y
    如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
    ' A7 e6 n0 [1 U5 C' o( D6 T本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢!

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

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

    : k0 ]2 y& V3 }8 i  a# ^# V7 j


    ' i1 {) X/ R6 y0 j' t. h' [; `) N) L7 @4 g. h6 i
    x = [4.1441    02 ]: c1 S' T9 p' C7 ^& s
    4.4684  0% d5 S& @0 r- c$ Q0 H% \4 {
    5.7308  0.002
    + g3 U# M7 I' `# h  s9.4417  0.0042) J2 o  i' p9 `- x; y4 k
    11.6335 0.0059
    ) c" ^) n* f6 ~3 i, e0 k% e  I13.4882 0.0073$ ^" v6 E5 e- J+ Q3 ~
    14.247  0.00786 E$ p: t( M! x# H$ O* v
    14.6688 0.008
    $ n0 S4 P& }/ y2 O8 ]; u13.7427 0.0068
    & w- p' U9 l8 z% d6 g, s11.8059 0.0044( F" B' P7 {8 y6 Z. \: c, E" M
    8.6033  0.00157 f% R- }8 R* `' |2 B/ v4 R" h5 {
    5.2315  -0.0013
    . ~( q- K" N) f3 R0 }1.6184  -0.0036
    / t3 i' Z1 H2 }- Z9 b0 O-0.8267 -0.00552 x/ [' w2 j; d* X* X/ R* e
    -3.5249 -0.0076# S9 g( n$ q4 q) K4 _
    -5.0424 -0.00896 t" Q: e4 U2 C# R. ~7 b
    -5.97   -0.0096( H! R' u' K) b9 X, J" v
    -5.9694 -0.0099
    & R; F( n# ~+ i8 ~# w& L: y% u-5.5492 -0.0089
    " v/ I9 a4 L+ I* T, j# f- }0 P-3.0212 -0.0062% c' ]. S! j, |5 R3 e
    -0.4088 -0.0035];9 R1 H4 {! y8 h* x
    %  p0=[1 1 1 1 1 1];
    1 i' C2 B  S8 X1 m& d  p0=[0.005 0.005 0.005 0.005 0.005 0.005];% l' G+ p( L& {7 K3 U
    warning off
    # g1 \4 K$ y8 E/ |* @$ h* nF=@(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);
    ) P$ V* C# W- w) }% 拟合系数,最小二乘方法
    " D/ }" f3 S: e) M! R! e# V0 T8 Up=nlinfit(x,zeros(size(x,1),1),F,p0);+ J5 D' o. G4 r
    p(1)
    / Y  C) ~5 p- P: l  N* g6 h/ {p(2)
    ' _0 P) e. Q9 D8 d! K: @p(3)+ M) y4 A% U- n' R; M
    p(4)) z4 X% N% \/ r
    p(5)
    - P, L5 Y( _" r3 F. q# vp(6)) G7 `; S1 d/ }; d
    : E# M1 i- w6 z2 R; B" [) ?

    $ N+ }" X5 v1 C+ i; d$ EA=p(1)/p(6);% s* p; L$ g( a0 m* E. v' f
    B=p(2)/p(6);- Y3 a- _$ d) f6 b0 e
    C=p(3)/p(6);
    ' \! \1 b1 p7 v& H' nD=p(4)/p(6);
    ) J  \. k' {$ H( V) J% TE=p(5)/p(6);
    ) r# W6 _/ j: F) s1 B- g+ \9 {6 i! C  }3 h) O  n! F; N3 o
    6 `9 T' s, l- W& ^) n
    %%椭圆中心, i2 m# A6 _  {% k6 b" H
    X_center = (B*E-2*C*D)/(4*A*C - B^2);
    " @0 ?  o+ ]. L$ g( V9 ~Y_center = (B*D-2*A*E)/(4*A*C - B^2);
    ' l6 H- y( C) h" Q* d* ]6 Z* U4 Yfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
    5 {& W# @2 O5 v%%长短轴* Z  y, F# ?: D# _; a) _3 F
    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 k" W1 N% a0 L+ n4 i7 |# N
    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))));# P+ ?4 y9 L4 o! {
    * \& z) |; [3 R; j$ y- w* ?

    0 l( w# `1 a" O0 I" {%%长轴倾角
    ( c/ T, s, p, G8 S" h, P+ @q=0.5 * atan(B/(A-C));
    ) s1 f  f4 m1 Y/ v9 Q: z) {- Yfprintf(' q=%g\n',q);
    9 ?! v& z) e! d% o- q' c
    5 |: U& W- b2 W4 @
    ; D+ b$ T$ A0 w5 Q& ]! e2 ?. h. Zfprintf(' a=%g, b=%g\n',a,b);
    # Q  Z  ^' {' U# Y! Dplot(x(:,1),x(:,2),'ro');* B; G! {8 W. E2 ?+ J  N8 y

    $ y2 T% G9 n8 V% E4 N
    + O* {" T( B: B) c8 |hold on;
    * l8 ?' _% p. rxmin=min(x(:,1));3 n6 }! g2 j/ [" t
    xmax=max(x(:,1));
    , a4 }) H. h3 p2 h8 `' ?& Zymin=min(x(:,2));
    5 s+ R9 A! i% L" f- D, Dymax=max(x(:,2));& ~+ M: {# M7 V# X
    xmid=(xmax+xmin)/2;6 ?( i+ l# P- ~1 \
    ymid=(ymax+ymin)/2;
    3 Y( f5 _9 D/ G' V2 N$ N% gstri=(xmax-xmid)*(ymax-ymid)/2;& j' K6 p$ K9 f. g
    S=a*b*pi;8 I; }8 d( N% ]+ d7 n2 I4 L2 S
    z=S/4/pi/stri;' l" m: H) u9 J2 w+ @) F
    % 将数据组集到data
    . k) ]+ X8 [5 y7 a1 Kdata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];# \( w+ G3 v/ q1 E$ n6 D
    % 将data切割成m*n的cell矩阵1 ]' L/ f5 H; [( q
    [m, n] = size(data);' g& ^2 F% ?' X
    data_cell = mat2cell(data, ones(m,1), ones(n,1));   
    9 P( Y7 O- o( G" |, l% 添加变量名称6 s( a3 t3 ^6 u
    title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};! W$ g& e8 j' O: s2 U6 O4 f
    % 将变量名称和数值组集到result: }  _" G, ~; z* k' C+ [
    result = [title; data_cell];
    ; }5 Y3 P' |0 `' s4 S8 H# g% 将result写入到wind.xls文件中+ c. E) c8 L. N0 A# ^$ k
    s = xlswrite('wind.xls', result);8 U/ k$ d8 Q$ V9 g$ R+ \1 F/ R& X9 Z' ~2 o
    1 j. T- a4 {3 N7 M' g- S, y1 f

    ! b5 J3 S% }( e& C* `% 作图
    ; ~) E- A1 W1 z" g0 G%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
    / u& c; K; U, v! [/ Y$ X3 c( E6 L8 N%title('曲线拟合');  w7 m1 [, ?' [, W
    %legend('样本点','拟合曲线')
    ) R, `. u6 O8 y# o- O

    & r' I1 K) {2 ?  m8 ~
    8 N/ _+ ~7 i+ X& t
    " m& t' C  Q4 D) _/ `: w1 l/ A
    & H+ Z# l: _, u5 k

    ( J8 i4 O9 O. R9 E% J/ w5 X  U
    ; B- F' l1 \5 d

    & A7 l/ {: E- C6 H+ d1 I2 e# d

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-23 16:58 , Processed in 0.187500 second(s), 27 queries , Gzip On.

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

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

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