EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。1 O! O, H" B5 @5 c N6 ?! s
如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
' s) E. F/ {8 J( f% O9 y9 c( G- Y本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos $ o, ^) B( L0 D
( C' ] B0 r* ?7 b# w) S& x
* Y. u% E) M" u4 n4 ]/ ^ x = [4.1441 0$ W$ W- z+ v1 z! n
4.4684 0
9 r5 _6 z% Q" F; j' C5.7308 0.002
7 F" h& ~5 j1 U1 D; ?# K9.4417 0.0042
/ b! S3 Q4 j) l6 r1 M8 V11.6335 0.0059! H* Q: o* `9 Y$ X! ?
13.4882 0.0073
B" a: A$ h* a: s+ p14.247 0.0078
/ m: ~. _) `+ D9 i6 y$ w14.6688 0.008- {0 W# A7 B; g8 s
13.7427 0.0068$ q+ }- _- O' ?) y) y9 [. z: q! Y
11.8059 0.0044
1 V" }! X5 J0 z9 S" ?2 n0 w8.6033 0.00157 S" x9 }4 {, F8 n% a) a
5.2315 -0.0013, d6 N2 I) y& s8 V+ E; m2 C7 J
1.6184 -0.00369 W! l8 U; b ]5 d
-0.8267 -0.0055" f4 ~5 w- R! B
-3.5249 -0.0076
5 |0 s: ~1 i E6 r-5.0424 -0.0089. f V( D# b; f6 N; _
-5.97 -0.0096
* y0 U' [9 Y) u% E; X$ M/ k& s3 L! a-5.9694 -0.0099
' ?# [0 g$ ^1 ~) r9 \-5.5492 -0.0089
* Z' i6 f8 }4 U/ B" Q1 s-3.0212 -0.0062& n; }9 f% U+ D. H8 x8 Y
-0.4088 -0.0035];; L3 [( r* m3 ^
% p0=[1 1 1 1 1 1];
* D9 K& w6 _' V/ |8 z3 j$ `( i p0=[0.005 0.005 0.005 0.005 0.005 0.005];4 l' {% }. A8 K3 d _+ y
warning off# G2 J/ [% x- x
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);
4 z; i$ a9 W) F V2 l% 拟合系数,最小二乘方法
5 k1 r' V" y4 k1 V1 y: [p=nlinfit(x,zeros(size(x,1),1),F,p0);
$ o0 x( I4 t; R4 f; H) {p(1)' D7 c+ \8 D3 S% I
p(2)
\! C, W1 C$ w7 |8 t8 jp(3)4 a- ~2 R1 c. y9 A" `
p(4)
# Y" u5 d9 k! J, |. Op(5), Y( ~7 ~: [+ _: m w1 w7 K, Q r
p(6)
; T8 n! h/ J2 G8 M# O
- w' T" M& P0 _! w9 L4 p" H* c# T! t4 ]
A=p(1)/p(6);
( R9 H" [! [3 D# Y/ ? O7 ~% h- XB=p(2)/p(6);+ J( Y( f. m1 n* M
C=p(3)/p(6);( @. k4 K# K1 \# `
D=p(4)/p(6);0 R; _" e# B$ a$ ^
E=p(5)/p(6); E5 C4 q% s8 N8 T& G" c
4 D; p9 O$ i/ h/ R9 l4 k) i" w: J* S5 W. M$ y5 w
%%椭圆中心
Y- H s0 [% ]) a- vX_center = (B*E-2*C*D)/(4*A*C - B^2);* u7 J; O2 V1 @
Y_center = (B*D-2*A*E)/(4*A*C - B^2);/ E# u: p( E; L0 \# v( ?
fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
$ h6 g& z3 x( L# Q%%长短轴2 n' W. z: m' k2 Z$ X5 ~; m& m
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))));8 P8 {2 ?, K" W! o D/ }
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))));; o. c3 k# E) j4 ?
, ^' V3 T+ |% D: K) @: t3 y+ q
7 {) s" ~0 }/ a) w%%长轴倾角0 u% I: ?9 }1 ]7 }1 ^
q=0.5 * atan(B/(A-C));
5 L$ X, Z7 i- R q0 pfprintf(' q=%g\n',q);5 A( E, @) b k4 K/ P I: H) K
: P! Y( P" o4 N/ k6 Z+ |
. {) l5 Y5 y# a4 m# Nfprintf(' a=%g, b=%g\n',a,b);
' P- k: i! E$ i+ w0 Y4 Pplot(x(:,1),x(:,2),'ro');: i0 E0 y; k' i! f6 r8 ?7 U. P% `; J
0 e8 e- U& G J& P' Y
% z+ y0 ^% r! p) \
hold on;- D$ c0 N3 M5 L6 u
xmin=min(x(:,1));
' ]4 _& E2 |8 \6 mxmax=max(x(:,1));8 f3 U5 ], @# c+ e
ymin=min(x(:,2));
5 J/ d# [3 y' Q6 T1 Tymax=max(x(:,2));* i' \# f! ?& a, k8 r
xmid=(xmax+xmin)/2;
0 `$ y; |: p9 j; ^- q% Jymid=(ymax+ymin)/2;9 c2 c/ ^5 P0 v6 B2 m: i% N3 Y
stri=(xmax-xmid)*(ymax-ymid)/2;0 M- X4 n1 x% H. n$ f. p
S=a*b*pi;
* y5 D3 \6 |$ L8 L7 M4 ~z=S/4/pi/stri;5 ]# D0 {2 S9 ^7 C) U! Z. [
% 将数据组集到data1 l4 ?4 S0 ~5 M! S
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];
3 T- ]. K- B6 `1 g% 将data切割成m*n的cell矩阵
3 a# L4 p0 a9 @2 ?$ S( f/ }, @[m, n] = size(data);' {" m4 p Z) `# s$ ?, b0 X6 Z; @8 a
data_cell = mat2cell(data, ones(m,1), ones(n,1)); : q+ O: i& i. A$ ?% ?
% 添加变量名称
( U) K* `1 J4 z. J# Utitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};
8 Z2 H1 R+ c8 M' H. Q% 将变量名称和数值组集到result
1 b8 l5 r( |. ? u7 o4 `; V) ?result = [title; data_cell];/ R; n! X. q# y2 u! R
% 将result写入到wind.xls文件中( m% g' Q0 T; P" M5 {' m
s = xlswrite('wind.xls', result);2 Z! [+ t3 w9 w! Q. }' o
+ Y7 ~; {2 o9 L5 w/ @: m2 @+ O0 v, l9 T e% |0 u
% 作图1 a; }! N* d0 G; q w9 }
%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
& V9 [! h) `% L- U" n7 A%title('曲线拟合');
3 w8 c* A A) L4 Z%legend('样本点','拟合曲线')
# w1 v: S; t& p0 i1 _
% p9 i- t( v- ]# ]8 n1 ^2 I" v6 |! g! m) A
4 r1 L4 n" b% ~
# \( @; z; K% y9 O* ]
( ~! b2 X* W; ?
3 n* h. _7 \* u( l: S0 Y* f6 Y0 v) q; S* M2 g! a
|