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

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

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

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

    [LV.1]初来乍到

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

    EDA365欢迎您登录!

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

    x

    各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。( [+ z. d* ^& [* K' \3 @# b0 N& w
    如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。% B. w6 ~1 b( M( w* ?# B
    本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢!

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

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


    3 g9 a4 U9 e: G# ?$ v. j


    + n1 i" S3 v9 \3 S) b: Q( b, [, L- M$ h- ^* d+ A# M4 m1 ]8 L
    x = [4.1441    00 S8 \. R' h, g. O5 F) M* ]2 k& a. H
    4.4684  0' k6 i# B! [, h
    5.7308  0.002# m: h' N: T/ M5 A4 M
    9.4417  0.0042
    6 Z$ B! J# [, y9 o9 d( p& ^# ~11.6335 0.0059  W2 W& \, [2 `4 e. S+ M
    13.4882 0.00733 N0 s  n7 t; [
    14.247  0.0078
      s' r6 |7 T. q/ X0 r$ U+ u: R14.6688 0.008& t( k$ y/ V5 H+ n( |: [0 y
    13.7427 0.0068
    8 o" ]% W6 u4 V% X( B) I11.8059 0.0044
    3 }- |$ Q* f0 Q( M6 s8.6033  0.00157 N; e$ u6 t0 _$ P! b
    5.2315  -0.0013
    3 y/ Y% V" v$ _# r- o1.6184  -0.0036  m! ?/ A) W6 Y: ^& `
    -0.8267 -0.0055( r7 h6 @8 j6 |7 {( ~, K: D
    -3.5249 -0.0076. F( j& b, P# R0 {$ Q. x
    -5.0424 -0.0089
    8 C1 R% W. |. C0 f  z# U' B) T-5.97   -0.0096) T1 ^% Y9 g; N% o- a' v7 q
    -5.9694 -0.0099
    4 \' l: x: Q, f. k0 k. @-5.5492 -0.00890 @2 ^# C( a9 V8 c/ D
    -3.0212 -0.0062
    1 H" w# `3 a0 y-0.4088 -0.0035];
    - {* L8 J3 F' J: t %  p0=[1 1 1 1 1 1];% H7 @$ ?0 V9 f/ z( p1 I6 x: A5 Q! |
      p0=[0.005 0.005 0.005 0.005 0.005 0.005];1 x( Y2 a5 \" Z6 C7 s
    warning off
    $ @& F% O& Q0 T" r! t  GF=@(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);
    9 d- S5 T' O: [& x% 拟合系数,最小二乘方法
    # Q' o% }% H: l" @  Op=nlinfit(x,zeros(size(x,1),1),F,p0);# ^- [% T; |' y( ?! K
    p(1)
    , r0 Z; {4 \" \/ g1 Lp(2)
      Y5 c$ L: D! o  E) r. wp(3)
    ( B& r2 |8 Y6 s+ {- p" Fp(4)
    ' B7 w! k! k: I* s" x4 Up(5)
      G- @0 Q7 |! R0 J% Ip(6)
    + c2 k& k1 z( G: y( j% D1 `, @: T7 e- H' W: M3 l+ P
    & C9 k; w& i) l7 j$ b. z0 y5 k
    A=p(1)/p(6);
    7 j5 X  U4 z3 ]0 B' PB=p(2)/p(6);
    * W* E& }; q) b/ @/ M" XC=p(3)/p(6);8 ?0 \5 M+ m- @
    D=p(4)/p(6);
    6 V1 g( S* c. y1 K+ YE=p(5)/p(6);7 W5 P$ ^2 h9 T* M7 c

    8 S7 `) [7 [: k! ]: s) L/ M' g/ _* V0 G, J
    %%椭圆中心
    . B) R3 M) f) o, @X_center = (B*E-2*C*D)/(4*A*C - B^2);% Y9 G- E/ q5 k5 ^
    Y_center = (B*D-2*A*E)/(4*A*C - B^2);
      ?$ x5 X! ]' g) Ifprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);9 u! x3 D0 w: C; k# {
    %%长短轴- A# W4 G9 ^, ^5 k
    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))));
    1 E) @) s) G, r5 m1 qb= 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 l0 R. |* ?+ M* j) ?& p

    8 q7 \: f! L  Z- T/ d3 _+ ^; h9 H" _/ [" \! d9 E- C8 i$ H3 G0 f# X
    %%长轴倾角# o# k* C8 n5 _; o
    q=0.5 * atan(B/(A-C));1 Q# t' u  H5 g
    fprintf(' q=%g\n',q);6 t/ }; {% M2 Q" \( x" L& L

    9 N; Q; \4 p; }& W# @+ v- I! t9 n" ~# E5 X+ g4 c
    fprintf(' a=%g, b=%g\n',a,b);! V! S9 F, f' G5 i" Y( e
    plot(x(:,1),x(:,2),'ro');
    % L0 h$ N, j0 M. V$ U% |0 o
    8 h2 B6 P4 G' R. B8 a8 f, h$ \, M2 E+ `8 V9 q8 c5 @7 J) S$ B
    hold on;; ], n5 k" F3 U, N* \  ]/ b7 G9 @
    xmin=min(x(:,1));
    1 T4 b6 d7 S0 Z% txmax=max(x(:,1));/ B; X5 [# |/ P
    ymin=min(x(:,2));: ^1 _; A, }3 |! ~9 K, {0 |! B
    ymax=max(x(:,2));* [# z6 }& _$ v1 \9 a1 \+ ~
    xmid=(xmax+xmin)/2;
    - c, P% ?4 ^) J' I6 hymid=(ymax+ymin)/2;
    1 Z% z1 U0 n$ L- M( x8 o6 O* ostri=(xmax-xmid)*(ymax-ymid)/2;& d# P+ P& C/ t' a( \& j# \
    S=a*b*pi;8 X: u% c& g. F: s5 h( s8 g
    z=S/4/pi/stri;) {3 f8 Z  R: }# H& f
    % 将数据组集到data
    0 Z# }' V) s/ G9 Udata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];" K' g& J4 Q2 R
    % 将data切割成m*n的cell矩阵: y& P( ?7 G+ j* U" W
    [m, n] = size(data);
      a* N6 K- K1 y4 @8 Y# }* {7 u$ Fdata_cell = mat2cell(data, ones(m,1), ones(n,1));   
    3 k6 g4 a) o6 d+ u$ m  w. i5 ^% 添加变量名称: _3 f: I1 E- h9 K' u; l
    title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};
    ! x- F6 |5 v; l  W6 f/ d% z% 将变量名称和数值组集到result* F6 L$ f. ^# _5 k" k- w
    result = [title; data_cell];
    - E- F3 }) K/ a9 r% 将result写入到wind.xls文件中
    0 l. U2 H) {, r2 B) F1 ]s = xlswrite('wind.xls', result);
    0 W: r/ {0 B; p* l; t; J2 o
    $ I( d0 Q0 w) J7 `% A6 K) L; K$ q( z. `
    % 作图) Y  M* l9 w0 `. V
    %ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
    ; u9 |0 r4 s/ ]6 G- _4 L$ g4 V%title('曲线拟合');# y2 E7 T" r$ A6 v
    %legend('样本点','拟合曲线')
    4 T* o1 l5 M: M9 `2 m" D: L' i

    ( {1 B* [  a/ @
    # j( H+ x7 c# A, P" @' w" [

    4 F# \9 v) e% r6 X: C# A
    ; W+ k: M0 H2 M, d

    2 }8 C& t) M0 [) z! Q( _3 t- c
    / Y" r" D: {9 h9 E

    4 _  j9 M: R2 r* S

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-19 02:05 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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