EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
1 t5 ^2 J7 G% X2 u8 ^如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
! W* h0 W* I, B* H8 i9 k本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos
& Q7 r( E7 c4 l5 g1 e6 @
, a# ?' [. \8 {1 g* q
3 C5 i. U, [) {7 V \ x = [4.1441 0* Y' K$ u9 F% o
4.4684 0
) Y8 R' y+ N( ~# ^5.7308 0.0029 L7 N/ A6 p( i( t- ~+ I
9.4417 0.0042
3 V+ F* x b9 l4 V4 S3 t, v7 w11.6335 0.0059
+ v) d& X2 X0 z13.4882 0.0073
+ N. Y$ l: S9 z* A! u' f14.247 0.0078
, F3 u/ M; B* x; g/ e! n4 }' w14.6688 0.008
5 u3 @' _( _5 Z' t9 U* W ~13.7427 0.0068' {- H4 P6 I5 G) K+ J! e8 G
11.8059 0.0044
: H' q [, O. f* w3 |1 y8.6033 0.0015
3 z- e$ T8 o" O5.2315 -0.0013
1 j& U* _& ~) K) O9 I- o8 C/ J1.6184 -0.0036' w- X8 ~1 v+ k
-0.8267 -0.0055
. h$ U; q9 a: U-3.5249 -0.0076
+ x! l' |/ j) H' U+ n; l1 @-5.0424 -0.0089
" t0 ~+ a: s) I/ \, ^-5.97 -0.0096$ i1 k+ p9 t' J* d9 `+ [
-5.9694 -0.0099
- Y. F0 I1 U1 W-5.5492 -0.0089! }$ j, y7 I5 Z$ M+ B
-3.0212 -0.0062- t: h1 ~: I& u7 C% w) I; }
-0.4088 -0.0035];5 g0 Q) R; S9 V# g( d0 {; ?
% p0=[1 1 1 1 1 1];
1 g, c3 J5 |. u/ v1 u2 x" k p0=[0.005 0.005 0.005 0.005 0.005 0.005]; W* r! e" G* g6 D
warning off3 I, G6 I. a' T6 M" |1 p
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);2 M7 y2 R- j7 B4 k
% 拟合系数,最小二乘方法
( [: ?5 O j4 i) @: Vp=nlinfit(x,zeros(size(x,1),1),F,p0);& |; e7 l( }7 E. n2 k4 T0 M1 a9 U B
p(1)
! T; q, d0 {) {9 W( y" w) |p(2)
! F( p% U& B5 O8 Lp(3): g: G3 C( c2 {/ R0 b
p(4)
) l# H0 e/ F D' t# t: U/ ]p(5)
' { I" _3 R1 U7 ?p(6)
( d3 ^0 M7 f9 [8 z9 ?& K R
/ y7 J2 w# ], ?$ {1 v" d# E5 h; a# P7 q2 t e
A=p(1)/p(6);
- S% x' ]4 s1 s7 J V: eB=p(2)/p(6);
9 P8 i* B3 |& v( tC=p(3)/p(6);; _8 w9 E \. H$ u' F
D=p(4)/p(6);
% N* c1 O$ [+ u/ A5 [) xE=p(5)/p(6);* {/ W' n) q# b) N. r, V
% \. e4 N$ l7 c5 c) u
3 ^ k6 B) L+ n
%%椭圆中心
/ f1 E' m; K- r& cX_center = (B*E-2*C*D)/(4*A*C - B^2);5 L* \) u2 c, }. ^" z
Y_center = (B*D-2*A*E)/(4*A*C - B^2);
6 {7 I8 s) h3 j& D1 b+ ?. @6 Jfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
; g$ ]0 f! u* e4 R$ c5 {. e%%长短轴8 D C( ~5 J" S- x0 d
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))));, I- S( A# m3 q" m- d7 v6 z& C
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))));1 M( @6 c, h2 H4 s- k& D
( @1 a! a; C. C2 \" c
$ c. U) A( `) M+ [' }( l6 t
%%长轴倾角
2 j$ r4 P* ~, q2 i$ u0 eq=0.5 * atan(B/(A-C));/ _0 p, z# O3 p7 ]0 ^$ Q' o
fprintf(' q=%g\n',q);) N7 u( @3 z0 q$ Z
# J+ }" j7 b8 X& `" B# B' {
* d; V6 D( n* L( t! pfprintf(' a=%g, b=%g\n',a,b);
; P# O/ y. g* w" v# O5 ], m/ @plot(x(:,1),x(:,2),'ro');
# m0 ?" ~7 E, x$ i- O) z, r* w9 F5 R% m+ ~' b' O& \8 _
1 W% J7 Y2 q, |; q
hold on;
" Y" d# e9 R) Axmin=min(x(:,1));
0 C: t& X! m0 F$ a4 ~% }7 n$ Z5 Dxmax=max(x(:,1));
, ^0 E4 N9 s1 I u6 z3 xymin=min(x(:,2));
0 f( L' ^% y5 |7 mymax=max(x(:,2));
N4 f2 Y( `( ]3 Cxmid=(xmax+xmin)/2;) }% z: ]9 X' Z3 r+ R0 `- `
ymid=(ymax+ymin)/2;
- u4 R7 e! D- V7 T$ ?# R. {& m: [: gstri=(xmax-xmid)*(ymax-ymid)/2;; N* E( H! M* F1 q$ v
S=a*b*pi;
& C e# d) L: ]: H" hz=S/4/pi/stri;. Q6 A. d9 t G) Z2 q. H
% 将数据组集到data$ S& S& i |& |, t
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];
7 v8 Y# M# k- y/ b1 U% 将data切割成m*n的cell矩阵* @3 d9 m# Y7 l; c1 \
[m, n] = size(data);0 S! E( s' V1 t4 q0 S
data_cell = mat2cell(data, ones(m,1), ones(n,1)); 1 z6 e. i( Y5 |( e, O9 ?; R/ ^+ K- v+ ~: d
% 添加变量名称7 d" i1 Z5 Z/ c
title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};2 f V2 ^% J1 ?2 j/ m
% 将变量名称和数值组集到result
; b9 X# b5 D% x, Gresult = [title; data_cell];: {0 b- K R: T& I' S% w, f
% 将result写入到wind.xls文件中
o% x) E2 i" r bs = xlswrite('wind.xls', result);3 I' _/ G% N4 d4 J6 r
$ d: ?7 x- y; M, \1 i/ t. u! v
" d7 k0 d1 L( C( t: i! b% 作图7 M3 w0 A1 ^: |9 ~
%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);' t& A' ]! z7 W5 B) Q
%title('曲线拟合');9 V$ F2 {" I6 R! y3 K- i! S
%legend('样本点','拟合曲线')/ Q% x/ O7 x9 h: A9 N& ]
8 X. |9 V" \, x3 A2 k
3 H2 h7 e6 e i* y' U. g+ T) |8 [
5 v6 g2 @/ \/ h1 c' w, b& T3 a' S# {7 n- j9 k* Q
6 R: t: N: N- q- O9 J
6 V p% C# U6 N1 [% D0 h
2 @# s7 `1 U0 _- L: v( x) Z |