EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
* M. n8 g% r1 Y# J# Q( [7 j如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
! f2 t2 ]4 X8 w3 a: b本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos
; ^4 x$ e% a# ]" H1 ?
- B9 T; J" J5 m
6 p: @" a; R$ @7 N- r x = [4.1441 0/ w8 k+ ~& c- `4 D1 [
4.4684 07 v8 c# z3 @% Q
5.7308 0.002
' j- ?' y# ^ f3 H6 j/ I* z5 A. X9.4417 0.0042
/ |1 y. i$ r0 N: h- r. C11.6335 0.0059; Z6 R) s- w9 A
13.4882 0.0073
. s/ F$ A U$ O. x! S14.247 0.0078. N0 x6 J' G! B$ E1 {, W3 o
14.6688 0.008
/ g3 @9 Z8 G- t4 I7 z13.7427 0.0068
" r, s6 h% L9 Z, d11.8059 0.0044
! u, \+ J1 h8 T" z/ |0 E8.6033 0.0015
# X- t! P+ r+ V2 i5.2315 -0.0013! m- ]- |5 E' n4 ?* s; W
1.6184 -0.0036
* ?7 V$ L/ [! c-0.8267 -0.0055
7 X6 W) a+ |3 }5 i1 I' v& f9 Q-3.5249 -0.0076
9 N. H( w( `( A: B) v-5.0424 -0.0089
0 ~. P7 ~" N. |+ X, D-5.97 -0.0096! ^3 G' k: `1 d# R( h
-5.9694 -0.0099# ]/ f/ M' r. B: E, q. u% X
-5.5492 -0.00897 R' `+ c) q* C8 F" t
-3.0212 -0.0062
8 u! C+ k! Z4 s, W; J1 U- E-0.4088 -0.0035]; {( N$ Z( R9 Y( w
% p0=[1 1 1 1 1 1];6 ?/ E! X) S* B: D: {3 [2 b% G
p0=[0.005 0.005 0.005 0.005 0.005 0.005];
: {" a7 _% l, O( J& iwarning off% @& `9 r! z* I6 J. Z
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);
* I: x1 o0 _- R% 拟合系数,最小二乘方法" D3 g" O3 o: [ a9 u
p=nlinfit(x,zeros(size(x,1),1),F,p0);
& h: W9 }) G* \ [0 X$ Lp(1)
7 f6 s6 w3 O& W, U$ d2 Jp(2)& Y u) O2 ]% t+ G3 ^
p(3)* Z3 t7 Q; _/ \
p(4)
4 b8 Y3 |( W) Y9 G0 F4 l+ yp(5)
& `; E2 Q% F. `$ B& g; F6 e) n3 yp(6); |' X: @ r5 B. }/ O2 ?
7 M% V; |, J5 k. h! i
7 X5 w" S5 @2 a. |5 v
A=p(1)/p(6);0 N) s/ A/ {' |" ~6 _$ ^+ P; f; T
B=p(2)/p(6);( s3 U1 _$ `* {( e% s6 o" f# b( X
C=p(3)/p(6);% k: d, z5 @! C4 s# l5 e9 {. E; L! [% |* z
D=p(4)/p(6);4 |' ?3 Y: C& I; K
E=p(5)/p(6);
. ]# s9 A4 I0 Q+ z2 B7 S% Q- a
4 w& J1 G' B1 b' U
%%椭圆中心: p. ]3 K5 t2 [6 p, s
X_center = (B*E-2*C*D)/(4*A*C - B^2);- l/ @4 n! C! i1 q/ g4 L
Y_center = (B*D-2*A*E)/(4*A*C - B^2);
3 ^2 E; l5 g* }. b7 Sfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
0 Q Z. h0 ^ }& H0 }6 |%%长短轴
* ^& H" y: _1 U3 B( Na= 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))));5 t. t' ^7 d J
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 q" L4 U" N) q) _# @$ w0 S% j/ V: U. a/ F0 D* ]
0 S) w& O, Q' e/ c" S8 N
%%长轴倾角, K+ r# ^7 ~0 V/ d1 ]$ C1 G
q=0.5 * atan(B/(A-C));
, S- x; `6 B1 J5 z; Sfprintf(' q=%g\n',q);8 \% \" A2 w5 p/ \
) J% I( c9 z3 W3 m
' E# t0 t! |5 e0 V zfprintf(' a=%g, b=%g\n',a,b);
4 R% N% O5 V% }plot(x(:,1),x(:,2),'ro');
( q6 K$ N: y) D* @
4 w' V( E3 ]: E1 @/ J6 K
! n9 C- J7 ^, J- U* ]0 w% Chold on;2 C" Z( R- P7 m/ [$ T$ R, u% W" N
xmin=min(x(:,1));
7 H( J+ C8 c8 M$ ]2 @. Jxmax=max(x(:,1));
: V U: Q E( Oymin=min(x(:,2));4 \5 L/ _: S, s' z, [
ymax=max(x(:,2));
7 z/ \: I+ @/ r1 Sxmid=(xmax+xmin)/2;* G0 X1 \+ S, n. Y
ymid=(ymax+ymin)/2;
* V# R5 P; [7 b; t9 P& N' k" S0 Estri=(xmax-xmid)*(ymax-ymid)/2;
: h" Y) O' N$ H8 f( |: Q& n2 zS=a*b*pi;: c2 x2 @% Z* u
z=S/4/pi/stri;! j. N4 E3 A6 O# r1 k( G/ u
% 将数据组集到data; P" }8 l1 j! [" l5 u/ J
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];% A8 o- x0 f3 {/ I+ E A% k! i L9 d
% 将data切割成m*n的cell矩阵. q& w2 b/ }! J6 H4 _! W" Y
[m, n] = size(data);6 o0 y7 P ], y6 ^% I2 X
data_cell = mat2cell(data, ones(m,1), ones(n,1)); : h5 k+ u* k6 J3 ?8 J
% 添加变量名称
) S8 \( x7 L+ S8 dtitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};7 @+ y. I7 V' o: M/ ~8 D
% 将变量名称和数值组集到result% {0 r+ {: K# b3 t: `$ K9 U" R
result = [title; data_cell];" u" [9 E5 c6 ]1 U {% Y h
% 将result写入到wind.xls文件中
9 ~) \( m& U; I# s* E% As = xlswrite('wind.xls', result);
- x7 {7 R2 m# K) P. E7 U9 {. B+ b' a' j! P5 _
/ G, t; n- Z0 Y& j! Q/ ]+ l
% 作图
& ?& x' I# ^0 S2 [0 n# F%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
2 ]6 K+ H6 S# @" G%title('曲线拟合');
6 i2 E5 J1 F$ I- R* D%legend('样本点','拟合曲线')
4 S. K1 a, A' U$ L( Q- u- a2 w! i- _& l8 }! `) x. G$ \
. U) `) F% z; m1 I' g0 }+ p# \5 i3 D' Y
6 [% J ^ H" i7 q r
9 G: C6 i$ P; ]3 n5 c h3 Q6 {* y
7 E; p- I/ m4 ?- G8 g: |: B3 C& I) `5 J' Z5 ^6 ~
|