[Matlab]一个数据集的处理
昨天帮同学用matlab 处理一个数据,一开始提了需求感觉很好实现啊但上手一弄弄了俩小时,很是蛋疼
1.数据集
有以下数据,以矩阵形式存放在matlab中:
可以看出第七列中间缺了一些数,而且每个数是第七列最大能达到50,然后循环往复,一桶油76000+行数据
2.需求
需求就是在顺序空缺处加入一个除第七列以外的全零列,如下:
使其变得顺序完整
3.思路
一开始想着直接在原矩阵上动手,发现逻辑有点复杂。1-50中间还好说,但再加上一个50到1的判断着实有些烧脑,所以分批处理吧。将大矩阵分成每个序号都是由小到大的排列的小矩阵放入一个CELL中然后挨个处理,最后再合并这个CELL。
4.实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | load dataCondence clearvars -except DATA_Original BatchMat = []; kk = 1; ll = 1; %矩阵拆分 while 1 while DATA_Original(kk+1,7)-DATA_Original(kk,7)>=0 if kk<( size (DATA_Original,1)-1) BatchMat = [BatchMat;DATA_Original(kk,:)]; kk = kk + 1; else break ; end end BatchMat = [BatchMat;DATA_Original(kk,:)]; CellMat{ll} = BatchMat; BatchMat = []; ll = ll+1; kk = kk+1; if kk==( size (DATA_Original,1)) break ; end end %处理小矩阵 for nCycle = 1: numel (CellMat) DATA = CellMat{nCycle}; iterMat = []; orderMat = []; curOrder = 0; %处理开头序列 if DATA(1,7) ~= 1 for j =1:DATA(1,7)-1 orderMat = [orderMat;curOrder+1]; curOrder = curOrder + 1; end curOrder = 0; iterMat = [iterMat;[ zeros (DATA(1,7)-1,6),orderMat, zeros (DATA(1,7)-1,6)]]; orderMat = []; end %处理中间数据 for i = 1: size (DATA,1)-1 iterMat = [iterMat;DATA( i ,:)]; if DATA( i +1,7)-DATA( i ,7) > 1 diff = DATA( i +1,7)-DATA( i ,7)-1; curOrder = DATA( i ,7); if diff ~=0 for j =1: diff orderMat = [orderMat;curOrder+1]; curOrder = curOrder + 1; end curOrder = 0; iterMat = [iterMat;[ zeros ( diff ,6),orderMat, zeros ( diff ,6)]]; orderMat = []; end end end iterMat = [iterMat;DATA( i +1,:)]; CellMat_NEW{nCycle} = iterMat; end %合并矩阵 CombMat = []; for i = 1: numel (CellMat_NEW) CombMat = [CombMat;CellMat_NEW{ i }]; end |
5.问题
在处理过程中,发现开头和结尾的判断实在有些绕,而且以前很多程序在边界处都是最容易出错的,有时间得总结一下这类数据的边界处理问题。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee