EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
% G/ o, E* X1 S! z; U9 _7 }$ S如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。) _+ m" M1 r& D' ^; O8 J
本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos $ p# S4 {( c, H+ L$ v7 q" r6 H
# v6 I$ q( P3 o; S& X. Z+ \# @2 X
2 r5 ]( t( ^( c) d
x = [4.1441 0
6 _6 M# N% B2 S4 \4 d1 |1 [4.4684 01 \: s7 I$ M- e9 p: E( G$ X# j0 W
5.7308 0.002$ e1 u( s+ B5 S0 B
9.4417 0.0042
6 c# N5 V2 y* q! f7 y% e11.6335 0.0059
7 V, q& X, @9 X6 j13.4882 0.0073
( M7 t Z9 z2 O; @: V8 }14.247 0.00784 w/ t7 x& ?, {
14.6688 0.008
! C5 ~! }* S) B13.7427 0.0068
( m: F3 i2 Q& E: ~6 i& k/ {$ m5 Y11.8059 0.0044
: P3 Z( K; s. o7 Q8.6033 0.0015
3 x i9 o& a* N$ O% N" |3 }8 N5.2315 -0.00130 q4 c0 Y; C4 }. n( n' j9 S
1.6184 -0.0036
) D. w$ _, l: K' a-0.8267 -0.0055
3 T: N; h4 q$ r, l-3.5249 -0.0076: d8 ]8 a# J) o8 U
-5.0424 -0.0089: \4 U2 J! w" \0 o
-5.97 -0.0096+ g2 g7 B0 V0 i2 B; ^' T
-5.9694 -0.00991 V+ r9 Z4 x/ S1 u6 h
-5.5492 -0.0089
1 _+ c& K% c& @4 T-3.0212 -0.0062
* i N+ {( b8 Z8 n-0.4088 -0.0035];
2 H2 Q6 I+ C$ g0 H % p0=[1 1 1 1 1 1];
# }2 O' @ x( s V P( ^9 h p0=[0.005 0.005 0.005 0.005 0.005 0.005];
- i6 P' n+ w% {8 Jwarning off- E/ E0 F: s/ _5 B7 ^
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);
' `; |; M3 \7 q0 V% 拟合系数,最小二乘方法
' j, j. D- X& u& J* }% F, j6 dp=nlinfit(x,zeros(size(x,1),1),F,p0);
( Y6 s) w& ~: H& W% E) f8 O+ M' _p(1)
1 ] `3 c9 ]9 l5 |/ z( ~p(2)
1 f* r8 t. J9 E2 I, V; Gp(3)" Q) B, z( ^5 }9 ~ n" S' `' j
p(4)
, x" U) e& P* \3 B1 @" D5 O0 L7 jp(5)7 b! O! {5 x2 ~4 ?6 j
p(6)
/ H1 i2 b2 O6 ?7 @/ s# Y) }5 c7 q y. {. Q
. K6 b! p& r# m: v
A=p(1)/p(6);
; H( Z& p4 ~4 ]1 a2 y9 dB=p(2)/p(6);" O j) a; P1 G( |9 l1 Z
C=p(3)/p(6);
# i- h3 W. s5 J) }) ~D=p(4)/p(6);0 B% R ~* x: b6 r# q/ g
E=p(5)/p(6);2 X$ ?8 q8 ~- Q6 U+ V ^
6 Q7 G8 u- C/ {" s! F" N4 E
5 p8 s% h* o+ q
%%椭圆中心
: I' K* F9 f/ T1 @" _. y) pX_center = (B*E-2*C*D)/(4*A*C - B^2);: r# @/ {4 U- R+ _1 { |
Y_center = (B*D-2*A*E)/(4*A*C - B^2);; o( `7 W% L) H6 v% |; I
fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
0 H3 Z) ^. m p6 k3 A3 {%%长短轴' s& j# k J/ W$ D! `8 W- I
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))));
9 z3 h0 w7 j4 Q# W9 Vb= 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, V9 b6 A" K
& T3 J; M( F) |) g8 } g9 I& _3 M* @! g, N
%%长轴倾角/ ?" W2 H3 v! R% A( d
q=0.5 * atan(B/(A-C));: K% ~( T: A+ x% Y H: D6 p8 ?& j
fprintf(' q=%g\n',q);
% ]/ s) \: W' {/ w {0 W* N1 ^! R3 ?0 b. J6 i" v5 w7 z3 Z
) ^+ p# ]0 O" N) F/ h# Bfprintf(' a=%g, b=%g\n',a,b);
1 ]; M; W; l% k" Kplot(x(:,1),x(:,2),'ro');
" @" R% M8 k; X' l7 B$ [' ~! h$ s l% D! f5 P. O4 N! I+ o
4 I! M4 h+ l# ehold on;
0 `; @7 W" c+ F4 [& |xmin=min(x(:,1));
9 G; x" J2 I$ `; w$ L3 \xmax=max(x(:,1));
7 i4 l, ]; x- G8 r/ P& ?& Gymin=min(x(:,2));
4 L- L C+ s- a' h8 kymax=max(x(:,2));
/ Z9 _. \" ^2 _: d7 x/ x" Exmid=(xmax+xmin)/2;
/ u; ^" }2 H0 D: L5 s1 Zymid=(ymax+ymin)/2;
' I' s" U: \- }6 }/ Xstri=(xmax-xmid)*(ymax-ymid)/2;
/ w' S- A) j& G: mS=a*b*pi;
* n' @, d: d. D+ [2 A: C ?z=S/4/pi/stri;
4 u ]+ L4 z9 U. _% 将数据组集到data
+ X0 g9 q. R" u1 w& udata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];
3 O/ x3 B2 Q* c; m" {/ f% 将data切割成m*n的cell矩阵5 z8 a; A- `* ?
[m, n] = size(data); U7 P3 t+ l# C7 X
data_cell = mat2cell(data, ones(m,1), ones(n,1)); - L* Y( E2 N, R! p, g
% 添加变量名称
2 s/ t# m( j$ K8 Ptitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};
. W4 j4 X8 H1 E A0 t& L# s. I/ h% 将变量名称和数值组集到result
/ O$ d5 e g! [# ~# Qresult = [title; data_cell];
4 t0 Z8 v3 h: d5 ?% 将result写入到wind.xls文件中 {# s( }: U+ j7 y4 [$ k# L2 q( T
s = xlswrite('wind.xls', result);" |( o( Q U6 _' J% `9 u5 J' m7 `$ v
2 _) K3 x* p8 l3 A. X
( p! ?/ o: `! U+ t9 F6 m: A Y/ s0 O
% 作图
& O. U* j" V* k L4 h%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
" s, @ v# O* |; I. `+ c0 D; A%title('曲线拟合');
0 T, i5 k/ T# j%legend('样本点','拟合曲线')
, X9 s, C+ q0 t( i- q& f4 Z# `, A5 G, k* T4 t
# T& t1 ~! B: w
1 k& j4 \( f1 p" m; z) X. J% |! E; {. f
7 c- u' j' S5 l7 `
w% v1 d$ T N% W" C* c3 w1 d3 u+ ~- p, f
|