EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。9 v* D) y. X! S: q
如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
9 V6 I# y; N7 Q7 L/ B4 k本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos
% g, ]. T1 v- D
/ y3 t- P4 U. e0 D6 m* C5 t( O" w4 S! D: ]: p$ X
x = [4.1441 0
) M1 N1 ?1 C6 D4.4684 0( a8 Y) S- u* R4 e! F. O
5.7308 0.0021 _ V; D, a- }4 g
9.4417 0.0042/ M: Y3 ^4 J' X% o
11.6335 0.00598 |$ f( d- O2 b- X$ i
13.4882 0.0073. X: Q y: T" T; W+ P3 l
14.247 0.0078- [# X* }& m/ j4 E$ i
14.6688 0.008
# Z7 ?0 _' g% [4 s# B13.7427 0.0068& r9 m' c( C. }
11.8059 0.0044
0 B7 ~- Y0 Y9 S- K$ o! m8.6033 0.00158 `6 J& s ~0 F! V0 q- Y
5.2315 -0.0013& Z7 l1 b& g0 E( s4 _* l1 r
1.6184 -0.0036
$ q- @& {% y, k' c-0.8267 -0.0055
7 t2 m& S) Z* q6 g+ @" q-3.5249 -0.0076
, A/ \" n$ a; {, ]* e; J$ Q. b-5.0424 -0.0089
' D5 X/ r. G4 S; ]/ P+ P' h-5.97 -0.0096
$ H& v9 L6 P- u I-5.9694 -0.0099
, ~0 W5 o1 N, j-5.5492 -0.0089
0 |; `- U1 K/ o- V-3.0212 -0.00621 L4 Z8 C- z! n. v2 B7 D
-0.4088 -0.0035];
+ C* {3 ~$ X3 a, W# Z# [, h4 k M % p0=[1 1 1 1 1 1];
) I2 t; P( Y! o* |* U, \- O' H p0=[0.005 0.005 0.005 0.005 0.005 0.005];1 U7 h& d$ S2 Z6 U# n3 y
warning off% C! ~7 F% B: s2 E% [
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);- J0 l: t+ i7 |- `
% 拟合系数,最小二乘方法
H# R9 c. y7 j$ wp=nlinfit(x,zeros(size(x,1),1),F,p0);
4 G7 i( Y+ T# N% Lp(1)/ l& {; J/ O* U( U( C |; n8 V4 _+ ]
p(2)
- M1 S& j( P9 T( up(3). Z% C5 q6 \+ ~1 k* M" v
p(4)2 |5 j0 I/ t2 j- b; k* U2 | M
p(5)1 G: f9 N0 O% ]( F9 |, p! b
p(6)
! N* t3 Z8 H; Y5 w1 J, W
0 J% h ]" ?% q5 }* F+ P9 [
5 x9 h+ @5 X0 b4 W3 t$ ]A=p(1)/p(6);
4 V! P. o, |) G$ u; r$ x) bB=p(2)/p(6);
" }: h4 g( A! i/ `1 TC=p(3)/p(6);' u' T! T/ F1 D7 L* [
D=p(4)/p(6);
& O- k9 J: `6 }" j) ]E=p(5)/p(6);
. h2 Z! g0 z5 n/ B9 b
\" f P; k/ h0 J7 N, _3 B( U8 u: k
%%椭圆中心
6 f) o% v# u: y9 [; r+ K1 QX_center = (B*E-2*C*D)/(4*A*C - B^2);0 H! ]( u5 x5 Z! _& O: M2 s
Y_center = (B*D-2*A*E)/(4*A*C - B^2);1 a( {* W3 c; C4 h
fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
- [4 `- d! ?8 E5 p%%长短轴! b) f' g ]+ U, l
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* n7 C0 l' F
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))));( Z% N% ]7 Y1 A# C3 y
. C) l9 N1 C+ ~9 z) ~) }
; l f/ X7 J5 o u8 n
%%长轴倾角
* Z# q! n# n# I6 @& N/ bq=0.5 * atan(B/(A-C));1 ?' r6 l) ^# |& y
fprintf(' q=%g\n',q);
3 q" H9 O2 Z0 N# i
. G& `3 z( B8 k# r- k
. s# [ C% I! V7 J, `. l% Sfprintf(' a=%g, b=%g\n',a,b);
; ?) P/ E: f: D" ?% Zplot(x(:,1),x(:,2),'ro');4 [ \. J, O, z; e. Q2 y* {3 T& f2 p: o
7 S# x; J4 A+ J6 ~' G1 [5 N' C0 u( }9 E
hold on;. P0 I6 n+ O4 ]3 ]
xmin=min(x(:,1));
7 R7 C1 U& O9 C2 z# [0 }xmax=max(x(:,1));. W- ?6 F* w6 j2 r9 f5 Z) c
ymin=min(x(:,2));! J5 ^! X# Q4 i9 i8 F4 H* q
ymax=max(x(:,2));% z$ q5 [1 C" f: s% o m* c
xmid=(xmax+xmin)/2;2 d+ G0 h# l1 u
ymid=(ymax+ymin)/2;
! V; F N6 p% lstri=(xmax-xmid)*(ymax-ymid)/2;
4 T j2 |2 L' _3 DS=a*b*pi;
- R$ r a2 m; c! a: [3 \* }: \z=S/4/pi/stri;
( L% j$ E" {2 M; s5 p' r% 将数据组集到data$ e4 a ~! [8 `2 e# M
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];& w1 |& p! Z; L, }) d& j
% 将data切割成m*n的cell矩阵5 r3 \- R( C% s) }
[m, n] = size(data);% T6 A W6 }! q9 g3 ]! `
data_cell = mat2cell(data, ones(m,1), ones(n,1));
% A" b5 h5 J5 i; x. Y9 n" Q/ @% 添加变量名称5 _! u$ c* z% I' h! b
title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};, w$ o4 X, `$ [" \5 r; e( U1 z
% 将变量名称和数值组集到result
# d$ C7 D$ i! ~7 t" tresult = [title; data_cell];5 M5 j& ]7 \) T5 U1 U e
% 将result写入到wind.xls文件中' y5 C: d7 [. l" Y5 ^9 e
s = xlswrite('wind.xls', result);3 C- ?* C9 Q+ A4 D( N, U
+ {) H$ m* P3 p; t7 Y
& k+ s- ?+ N G' W' q; a7 J9 c
% 作图
: \* L; c: O7 ^1 M$ P! l2 T%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
) e. f* c% q4 t8 G# `+ G2 h" Z* J; H6 L%title('曲线拟合');
5 |( B _/ o! P1 f& k) q" d2 ?%legend('样本点','拟合曲线')& w2 S- z' ?8 w$ R; ^0 N
/ b5 t, q/ B( A8 M" q
t# l; D1 n2 F5 r4 Q, T: w- u$ D$ N" O' o
# E0 W8 {3 y& F! T
3 Z7 c8 t5 I" `1 K/ A5 Y
" }9 b5 Q" n' |3 V e, c+ k$ |- @/ u" b+ r6 W/ Y1 [# h4 u
|