EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。$ \( N! O0 _" f' |. o. W9 G: }
如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
! f; R+ R; x8 S本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos 7 ~8 E' M% y% B$ Z
2 w+ \. r) P9 K* h( O8 M, q1 j) V: i% r( a5 @) K8 l4 N! w
x = [4.1441 0- Z* `' z+ |' |) t& E
4.4684 0% ^( F1 p, [2 K6 P, u0 R
5.7308 0.002$ R, u- a$ Y9 d+ a% G7 g
9.4417 0.0042 n8 ~$ Y+ r: J& }6 M
11.6335 0.0059; O2 `8 ]; d- m1 G. Y. l) g; ?
13.4882 0.00731 @8 _8 ]3 ^7 B/ m& S* e
14.247 0.0078; V% P( a- S: }' R. V% P
14.6688 0.0082 P7 E# M4 e. u5 s% m7 i
13.7427 0.0068; }1 @ R! A' k/ w
11.8059 0.0044( T" j8 Y; ]! E5 ~8 G/ j
8.6033 0.0015
, V, F' K! v7 j/ L8 e& W; w5.2315 -0.0013& ], H6 C" F. | G
1.6184 -0.0036
, [# J) v7 X' E-0.8267 -0.0055
7 S. [6 @3 P4 J) F: h% x6 H: M: U-3.5249 -0.0076
& P+ m" \5 m# Z4 ?9 c-5.0424 -0.0089
" f3 S' v6 f$ b# B* F2 y: l-5.97 -0.0096+ F$ W8 ~$ ]. G# f/ c% T
-5.9694 -0.00994 @. j# N, m3 d) I7 C
-5.5492 -0.00897 i$ Q& H7 T) C9 W% v* M& n2 t4 ~
-3.0212 -0.0062
2 |; ] K: J v-0.4088 -0.0035];. W6 O# E* s% d ^& N* o% O
% p0=[1 1 1 1 1 1];; s( ]8 r, B! \, D
p0=[0.005 0.005 0.005 0.005 0.005 0.005];7 q# a9 N2 w% b2 l/ `/ m; {
warning off
1 H! v9 Z3 L& `7 X1 W* H, KF=@(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);% V R; m' r4 Y; R% \
% 拟合系数,最小二乘方法0 ~0 v+ z0 M3 t
p=nlinfit(x,zeros(size(x,1),1),F,p0);
u* `4 r1 r& G/ Lp(1) L9 k/ J! P) J. u. z7 R
p(2)
# }! o b' x0 _$ s7 E3 Bp(3)
' X2 y6 w9 C. ]# a Op(4)
/ |$ O2 S' I& g* g% {p(5)" O' r, a; R# P
p(6)& x5 Q- p X# J: ]- l
D P0 w* t# ?+ ^' R
( z3 l: _( K" x
A=p(1)/p(6);
: B1 c( \, C/ a- L' t5 O; |B=p(2)/p(6);
c1 P i, f( _, rC=p(3)/p(6);
9 a+ n8 T* K# WD=p(4)/p(6);
/ e2 F1 Q: d+ E+ PE=p(5)/p(6);* j: K% l9 x/ B& O4 I# A. S6 w
& R3 n' ~' R$ e5 W
8 Z- l. t8 T" Q+ M' W+ I4 k
%%椭圆中心
% ^$ @! z7 _+ r0 `( rX_center = (B*E-2*C*D)/(4*A*C - B^2);
+ y \% g% @/ Q" L" |! zY_center = (B*D-2*A*E)/(4*A*C - B^2);
2 v8 D* @: p L8 c8 Y! hfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);- d5 Y f* T( t" u8 O( l* A0 j6 l
%%长短轴% p3 o& \6 n) ^2 R1 u
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))));
2 W4 a0 w, s8 ~- Kb= 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))));
; v" f5 P1 L3 ?( b i0 Q* T- \7 e# h# e& H
# |9 k2 G* W2 o* k$ {" ^%%长轴倾角
' M+ n5 d9 K# {& @7 jq=0.5 * atan(B/(A-C));
8 t. g7 h0 n& A B* I6 qfprintf(' q=%g\n',q);* E: {; ^5 X( a' b. B
! ^: a$ U( C8 w1 }- O
5 d' m6 t" n: ~/ u9 U8 U
fprintf(' a=%g, b=%g\n',a,b);& f! o0 v4 N7 d( ~7 X6 B. K% w2 M
plot(x(:,1),x(:,2),'ro');
8 A0 D! L" n) t+ x# }
/ l: ~' y; S' v% m- g2 e0 g5 X# G5 I5 t; @- ]$ \
hold on;- O, r$ M K! z1 w0 ~3 r
xmin=min(x(:,1));
0 l. }$ f: ~# I6 l! a) E: {xmax=max(x(:,1));
$ ^8 H0 B: k, Vymin=min(x(:,2));
$ T4 l8 Q/ s: G0 r+ m2 Aymax=max(x(:,2));
0 `, q1 h. _+ f0 v# p2 W* E- T" `xmid=(xmax+xmin)/2;/ @/ A6 { x& `0 s; b( e0 p/ {9 Z7 H
ymid=(ymax+ymin)/2;) _4 ?) T% {% p$ F1 t6 [
stri=(xmax-xmid)*(ymax-ymid)/2;
6 C' S$ q4 S+ H8 ]/ ]S=a*b*pi;2 i; L0 s1 O7 Z; C& P- ~; s5 F6 U
z=S/4/pi/stri;
, F# D. l: k0 A2 ~" ~3 C% d% 将数据组集到data+ S* K/ c$ b/ n9 b) H% u" A5 H+ `, Z
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];
7 K& e4 O" k+ c% o9 e% 将data切割成m*n的cell矩阵5 e- t: p$ D/ P q! L
[m, n] = size(data);, N3 [, }% ~# e3 h. y
data_cell = mat2cell(data, ones(m,1), ones(n,1)); ; p; D$ y) L% X- Z
% 添加变量名称
) J& C7 H6 M7 V3 [1 Ltitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};) p7 t- C/ k% u/ J# T2 x' Q' e
% 将变量名称和数值组集到result. M. F! {! `+ K. M. Q
result = [title; data_cell];
, O0 f5 |. F6 q, ~# t% 将result写入到wind.xls文件中% i: x" s+ B" c; @- H% p
s = xlswrite('wind.xls', result);' q. [9 j: ~' y) i; G
8 I9 H. q5 W8 \: ~' a0 c8 g2 G4 t5 z w. W0 _) K% h
% 作图
4 g2 E9 q8 M1 l%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
) I4 G" y$ V* q, ?%title('曲线拟合');4 a. m# R" R: M' ^0 c( E
%legend('样本点','拟合曲线')
: k$ o; q" m- A; }% \' p% o& p* w. y4 H, E3 ?
- J F# X6 U# J+ I" X/ c# ~: j8 x- W* W
$ [) |& @0 Z8 |5 z6 }+ h) \' W' |" k ~% C7 Q- q
. G; v9 |/ x% ?* E p
* @8 Q) ?( ]3 o, S; V' n; W' L
, r9 C, i$ M! @0 T
|