嘛呐嘿 2019-04-17 17:02 采纳率: 0%
浏览 869

如何用matlab分组运算

各位老师大家好,本人现在遇到了一个棘手的问题,不知如何使用matlab进行分组预算。
如图所示,本人已将数据进行分组完毕,运算部分的代码很简单,本人也已经完成,只是这个识别分组这里不太会,如果不能实现分组识别计算的话,几万组数据只保存在一个excel文件中,手动输入的话,确实有些繁琐,烦请各位老师指导一下。
本人已完成的代码部分也一并提交,代码中的数据为其中一组数据,望各位老师予以添加修改并指导,多谢!

目前本人的代码只是将图片中的前两列数据手动复制进代码,本人想直接将图中的三列数据全部导进去,并根据第三列的数组进行分组计算(数字相同的为一组)

ps:本人使用的是Matlab r2018a,运行环境的macos

图片说明

 x = [4.1441    0
4.4684  0
5.7308  0.002
9.4417  0.0042
11.6335 0.0059
13.4882 0.0073
14.247  0.0078
14.6688 0.008
13.7427 0.0068
11.8059 0.0044
8.6033  0.0015
5.2315  -0.0013
1.6184  -0.0036
-0.8267 -0.0055
-3.5249 -0.0076
-5.0424 -0.0089
-5.97   -0.0096
-5.9694 -0.0099
-5.5492 -0.0089
-3.0212 -0.0062
-0.4088 -0.0035];
 %  p0=[1 1 1 1 1 1];
  p0=[0.005 0.005 0.005 0.005 0.005 0.005];
warning off
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);
% 拟合系数,最小二乘方法
p=nlinfit(x,zeros(size(x,1),1),F,p0);
p(1)
p(2)
p(3)
p(4)
p(5)
p(6)


A=p(1)/p(6);
B=p(2)/p(6);
C=p(3)/p(6);
D=p(4)/p(6);
E=p(5)/p(6);


%%椭圆中心
X_center = (B*E-2*C*D)/(4*A*C - B^2);
Y_center = (B*D-2*A*E)/(4*A*C - B^2);
fprintf(' X_center=%g, Y_center=%g\n',X_center,Y_center);
%%长短轴
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))));
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))));


%%长轴倾角
q=0.5 * atan(B/(A-C));
fprintf(' q=%g\n',q);


fprintf(' a=%g, b=%g\n',a,b);
plot(x(:,1),x(:,2),'ro');


hold on;
xmin=min(x(:,1));
xmax=max(x(:,1));
ymin=min(x(:,2));
ymax=max(x(:,2));
xmid=(xmax+xmin)/2;
ymid=(ymax+ymin)/2;
stri=(xmax-xmid)*(ymax-ymid)/2;
S=a*b*pi;
z=S/4/pi/stri;
% 将数据组集到data
data = [xmin',ymin',xmax',ymax',xmid',ymid',a', b', A', B',C',D',E',stri',S',z'];
% 将data切割成m*n的cell矩阵
[m, n] = size(data);
data_cell = mat2cell(data, ones(m,1), ones(n,1));   
% 添加变量名称
title = {'xmin','ymin','xmax','ymax','xmid','ymid','a', 'b', 'A', 'B','C','D','E','stri','S','z'};
% 将变量名称和数值组集到result
result = [title; data_cell];
% 将result写入到wind.xls文件中
s = xlswrite('wind.xls', result);






% 作图
%ezplot(@(x,y)F(p,[x,y]),[xmin,xmax,ymin,ymax]);
%title('曲线拟合');
%legend('样本点','拟合曲线')


  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:27
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:matlab字符串拼接

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?