EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
各位大神好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
" l( o/ W8 n1 z s6 l如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
& v9 p3 e2 }6 t* T本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢! 目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组) ps:本人使用的是Matlab r2018a,运行环境的macos
" t3 X5 f" d( f; m, e
& B3 j, T! O/ \
( w- E% g/ S$ s, O+ `; {2 O x = [4.1441 0
8 v6 ?/ K- P5 \: I4.4684 0
) {3 J( G4 k, ~" B) b! ~2 y* w5.7308 0.002
* V; y3 Z) Q0 [" ]8 X9.4417 0.0042( x F6 i: `( a5 T7 o# H( p
11.6335 0.0059
* m. t6 o1 e$ I; f; t; z13.4882 0.0073
2 c1 f8 ~$ R" W3 M+ `5 |14.247 0.0078: `8 r0 j5 M0 w
14.6688 0.008
" `) R; i% K0 d0 t9 o13.7427 0.0068+ g1 j% G: Q; [) [8 |
11.8059 0.0044
- K& z% z9 D: W. @/ P. y8.6033 0.00158 p3 U. O4 V ]
5.2315 -0.0013
' g; \) |+ t+ n: k, f0 _1.6184 -0.00369 H8 G% m5 O# \# |0 R+ E! |& V
-0.8267 -0.00551 v' T( ?: o8 N9 F5 y3 S+ l
-3.5249 -0.0076- a8 s4 k& m; T/ k$ `
-5.0424 -0.0089
0 x0 `6 @- C% F' q+ M9 M-5.97 -0.00964 R; V. L! j* A5 j9 Q3 h+ a4 Q4 ~& |
-5.9694 -0.0099
& V( O5 m3 i- \' @( N' q9 ~$ x-5.5492 -0.0089
# P2 N# z: ]( c5 o7 O-3.0212 -0.00626 L5 ^6 w i$ W5 a& j1 p
-0.4088 -0.0035];
: _/ g5 |2 z' v0 p! D7 I % p0=[1 1 1 1 1 1];
, r U& r+ A2 @2 F* V, W& ^ p0=[0.005 0.005 0.005 0.005 0.005 0.005];# f4 c: ^ Z0 |5 C, H
warning off
3 @3 ]+ j# W/ B) u' n8 F/ xF=@(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);# p9 v+ c9 H& Q1 g( U4 M
% 拟合系数,最小二乘方法5 _, m- ]( e% I, m! @' H
p=nlinfit(x,zeros(size(x,1),1),F,p0);
% T& I; K9 a2 R+ \* w) ]8 k3 j. Tp(1)
; d) E4 R- \- n& L# I4 Np(2)+ I+ B' H a! G" T, Y! P! ~: }3 V
p(3)2 X& C1 p9 Q+ Y5 F1 [
p(4)4 T, T; I. H! M% d! C4 m
p(5)# g6 f( [$ R, g2 K$ T
p(6)
8 L, H; ?% ^1 U1 d4 C: T. F5 c, X+ e/ G$ C6 { A7 y: i2 Z) N. d$ k
/ d: t9 d& n0 j; o+ w8 J
A=p(1)/p(6);* ^7 O$ r% ~' `4 t% M. Y
B=p(2)/p(6); ~4 C8 m3 G$ H$ \
C=p(3)/p(6);, t$ l8 ~7 c& m6 z& _' o" q! T# H
D=p(4)/p(6);% n3 D5 g8 D3 T# u o. N7 v) q+ C9 n
E=p(5)/p(6);+ `+ r% B4 E3 T- {$ c
- E4 T! @; U; z4 t0 ^& g% a% T. i* i$ `' t+ X
%%椭圆中心
# ?; g, F) H3 W; G9 P' U2 B* TX_center = (B*E-2*C*D)/(4*A*C - B^2);/ h" m0 \9 a' |, S) e7 q* o; a
Y_center = (B*D-2*A*E)/(4*A*C - B^2);
: ~ D9 `* d4 ^ V6 I( ^8 Zfprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
; e) Z' r( z8 ~/ O4 M% n%%长短轴/ E' C7 p! t, \+ P- S' |
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 C0 w$ S5 n: P/ r$ `
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))));
6 C9 z, ^! X# R) M! n6 s4 f' u/ `. G P$ {8 T! U
4 J/ O1 k* f& L
%%长轴倾角
: [* ]% h' J" p! b- w$ v; M9 ?q=0.5 * atan(B/(A-C));$ f; w" q8 q3 J8 [6 R
fprintf(' q=%g\n',q);2 x1 g. S) l- d# J
4 L1 U9 m2 C$ H! l! i( S2 }$ U8 r2 b
fprintf(' a=%g, b=%g\n',a,b);7 Y. ]/ Z5 l3 w% I) L2 l- H
plot(x(:,1),x(:,2),'ro');" ?* H8 _. x6 ]0 D+ J, ^! X& \4 T
" o% X w2 E/ G+ |# W
8 l' l8 e% g+ w% Z( d$ w
hold on;
4 _7 g0 Z% H4 c D% Hxmin=min(x(:,1));0 C3 f' e! b; l5 N" b- K
xmax=max(x(:,1));( y% e. t+ O, [
ymin=min(x(:,2));
- n- u5 q) C6 s9 j, c# l# Kymax=max(x(:,2));: p% k4 H5 x0 }3 D
xmid=(xmax+xmin)/2;+ _5 R' t. b1 B4 Q
ymid=(ymax+ymin)/2;
; e, t9 ]7 [& v7 t: o. p2 estri=(xmax-xmid)*(ymax-ymid)/2;1 s$ ]8 U; l) r5 u" P2 Y
S=a*b*pi;- D. a6 W8 [( y6 j" D% h# m/ r1 P
z=S/4/pi/stri;
8 x( u$ u$ k' H+ z) G0 d# t% 将数据组集到data
2 j. i, x& [- Tdata = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];$ B3 ?$ j4 N# n C; g$ K
% 将data切割成m*n的cell矩阵
; o, h. B% [( F5 N, }4 R[m, n] = size(data);# [( ] U8 l& z& F& x; M0 \3 J( {1 v7 l
data_cell = mat2cell(data, ones(m,1), ones(n,1));
! F/ H/ L7 o9 g7 a; Q% Y% 添加变量名称
# N' e# [& w E0 |, W$ J6 m& S* Wtitle = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};! b. s! q9 x: p8 y- i! z1 L
% 将变量名称和数值组集到result% t8 E; d! Q2 P) a7 ?
result = [title; data_cell];
# u' `: t! Q) \1 i% 将result写入到wind.xls文件中
( M3 A0 j& a W* m3 t* q% k+ ss = xlswrite('wind.xls', result);% h& ^ {0 b3 f
: G+ y' _- G e B. h) X# V. v7 N8 h( X
9 Z [ L+ I# z% 作图/ i3 b" P; v! V- `' t
%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);8 d8 O' p8 T: _
%title('曲线拟合');
/ B0 {# \; r3 q& w%legend('样本点','拟合曲线')* P9 b# I! L% N5 t( K8 [
2 W$ A5 m0 G$ [9 ?3 j( Q, @7 e. t5 _# S
: G/ ?# ^8 M* w3 B$ C; d9 b$ h* x9 X
2 k0 h5 G5 ~* ^2 i, N6 \2 Y" S' C% |5 X( ]% m7 B5 }
) B4 A3 T( L2 w% ~- @
& J- C q8 m1 O; _
|