EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。8 D5 {9 f) s4 f" L$ b" e. y
如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
' A7 e6 n0 [1 U5 C' o( D6 T本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos : k0 ]2 y& V3 }8 i a# ^# V7 j
' i1 {) X/ R6 y0 j' t. h' [; `) N) L7 @4 g. h6 i
x = [4.1441 02 ]: c1 S' T9 p' C7 ^& s
4.4684 0% d5 S& @0 r- c$ Q0 H% \4 {
5.7308 0.002
+ g3 U# M7 I' `# h s9.4417 0.0042) J2 o i' p9 `- x; y4 k
11.6335 0.0059
) c" ^) n* f6 ~3 i, e0 k% e I13.4882 0.0073$ ^" v6 E5 e- J+ Q3 ~
14.247 0.00786 E$ p: t( M! x# H$ O* v
14.6688 0.008
$ n0 S4 P& }/ y2 O8 ]; u13.7427 0.0068
& w- p' U9 l8 z% d6 g, s11.8059 0.0044( F" B' P7 {8 y6 Z. \: c, E" M
8.6033 0.00157 f% R- }8 R* `' |2 B/ v4 R" h5 {
5.2315 -0.0013
. ~( q- K" N) f3 R0 }1.6184 -0.0036
/ t3 i' Z1 H2 }- Z9 b0 O-0.8267 -0.00552 x/ [' w2 j; d* X* X/ R* e
-3.5249 -0.0076# S9 g( n$ q4 q) K4 _
-5.0424 -0.00896 t" Q: e4 U2 C# R. ~7 b
-5.97 -0.0096( H! R' u' K) b9 X, J" v
-5.9694 -0.0099
& R; F( n# ~+ i8 ~# w& L: y% u-5.5492 -0.0089
" v/ I9 a4 L+ I* T, j# f- }0 P-3.0212 -0.0062% c' ]. S! j, |5 R3 e
-0.4088 -0.0035];9 R1 H4 {! y8 h* x
% p0=[1 1 1 1 1 1];
1 i' C2 B S8 X1 m& d p0=[0.005 0.005 0.005 0.005 0.005 0.005];% l' G+ p( L& {7 K3 U
warning off
# g1 \4 K$ y8 E/ |* @$ h* nF=@(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);
) P$ V* C# W- w) }% 拟合系数,最小二乘方法
" D/ }" f3 S: e) M! R! e# V0 T8 Up=nlinfit(x,zeros(size(x,1),1),F,p0);+ J5 D' o. G4 r
p(1)
/ Y C) ~5 p- P: l N* g6 h/ {p(2)
' _0 P) e. Q9 D8 d! K: @p(3)+ M) y4 A% U- n' R; M
p(4)) z4 X% N% \/ r
p(5)
- P, L5 Y( _" r3 F. q# vp(6)) G7 `; S1 d/ }; d
: E# M1 i- w6 z2 R; B" [) ?
$ N+ }" X5 v1 C+ i; d$ EA=p(1)/p(6);% s* p; L$ g( a0 m* E. v' f
B=p(2)/p(6);- Y3 a- _$ d) f6 b0 e
C=p(3)/p(6);
' \! \1 b1 p7 v& H' nD=p(4)/p(6);
) J \. k' {$ H( V) J% TE=p(5)/p(6);
) r# W6 _/ j: F) s1 B- g+ \9 {6 i! C }3 h) O n! F; N3 o
6 `9 T' s, l- W& ^) n
%%椭圆中心, i2 m# A6 _ {% k6 b" H
X_center = (B*E-2*C*D)/(4*A*C - B^2);
" @0 ? o+ ]. L$ g( V9 ~Y_center = (B*D-2*A*E)/(4*A*C - B^2);
' l6 H- y( C) h" Q* d* ]6 Z* U4 Yfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
5 {& W# @2 O5 v%%长短轴* Z y, F# ?: D# _; a) _3 F
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 k" W1 N% a0 L+ n4 i7 |# N
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))));# P+ ?4 y9 L4 o! {
* \& z) |; [3 R; j$ y- w* ?
0 l( w# `1 a" O0 I" {%%长轴倾角
( c/ T, s, p, G8 S" h, P+ @q=0.5 * atan(B/(A-C));
) s1 f f4 m1 Y/ v9 Q: z) {- Yfprintf(' q=%g\n',q);
9 ?! v& z) e! d% o- q' c
5 |: U& W- b2 W4 @
; D+ b$ T$ A0 w5 Q& ]! e2 ?. h. Zfprintf(' a=%g, b=%g\n',a,b);
# Q Z ^' {' U# Y! Dplot(x(:,1),x(:,2),'ro');* B; G! {8 W. E2 ?+ J N8 y
$ y2 T% G9 n8 V% E4 N
+ O* {" T( B: B) c8 |hold on;
* l8 ?' _% p. rxmin=min(x(:,1));3 n6 }! g2 j/ [" t
xmax=max(x(:,1));
, a4 }) H. h3 p2 h8 `' ?& Zymin=min(x(:,2));
5 s+ R9 A! i% L" f- D, Dymax=max(x(:,2));& ~+ M: {# M7 V# X
xmid=(xmax+xmin)/2;6 ?( i+ l# P- ~1 \
ymid=(ymax+ymin)/2;
3 Y( f5 _9 D/ G' V2 N$ N% gstri=(xmax-xmid)*(ymax-ymid)/2;& j' K6 p$ K9 f. g
S=a*b*pi;8 I; }8 d( N% ]+ d7 n2 I4 L2 S
z=S/4/pi/stri;' l" m: H) u9 J2 w+ @) F
% 将数据组集到data
. k) ]+ X8 [5 y7 a1 Kdata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];# \( w+ G3 v/ q1 E$ n6 D
% 将data切割成m*n的cell矩阵1 ]' L/ f5 H; [( q
[m, n] = size(data);' g& ^2 F% ?' X
data_cell = mat2cell(data, ones(m,1), ones(n,1));
9 P( Y7 O- o( G" |, l% 添加变量名称6 s( a3 t3 ^6 u
title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};! W$ g& e8 j' O: s2 U6 O4 f
% 将变量名称和数值组集到result: } _" G, ~; z* k' C+ [
result = [title; data_cell];
; }5 Y3 P' |0 `' s4 S8 H# g% 将result写入到wind.xls文件中+ c. E) c8 L. N0 A# ^$ k
s = xlswrite('wind.xls', result);8 U/ k$ d8 Q$ V9 g$ R+ \1 F/ R& X9 Z' ~2 o
1 j. T- a4 {3 N7 M' g- S, y1 f
! b5 J3 S% }( e& C* `% 作图
; ~) E- A1 W1 z" g0 G%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
/ u& c; K; U, v! [/ Y$ X3 c( E6 L8 N%title('曲线拟合'); w7 m1 [, ?' [, W
%legend('样本点','拟合曲线')) R, `. u6 O8 y# o- O
& r' I1 K) {2 ? m8 ~
8 N/ _+ ~7 i+ X& t" m& t' C Q4 D) _/ `: w1 l/ A
& H+ Z# l: _, u5 k
( J8 i4 O9 O. R9 E% J/ w5 X U
; B- F' l1 \5 d
& A7 l/ {: E- C6 H+ d1 I2 e# d |