博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Matlab]一个数据集的处理
阅读量:5289 次
发布时间:2019-06-14

本文共 1988 字,大约阅读时间需要 6 分钟。

昨天帮同学用matlab 处理一个数据,一开始提了需求感觉很好实现啊但上手一弄弄了俩小时,很是蛋疼

1.数据集

有以下数据,以矩阵形式存放在matlab中:

可以看出第七列中间缺了一些数,而且每个数是第七列最大能达到50,然后循环往复,一桶油76000+行数据

2.需求

需求就是在顺序空缺处加入一个除第七列以外的全零列,如下:

使其变得顺序完整

3.思路

一开始想着直接在原矩阵上动手,发现逻辑有点复杂。1-50中间还好说,但再加上一个50到1的判断着实有些烧脑,所以分批处理吧。将大矩阵分成每个序号都是由小到大的排列的小矩阵放入一个CELL中然后挨个处理,最后再合并这个CELL。

4.实现

load dataCondenceclearvars -except DATA_OriginalBatchMat  = [];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;    endend%处理小矩阵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.问题

在处理过程中,发现开头和结尾的判断实在有些绕,而且以前很多程序在边界处都是最容易出错的,有时间得总结一下这类数据的边界处理问题。

 

转载于:https://www.cnblogs.com/virter/p/9018085.html

你可能感兴趣的文章
SpecFlow特性介绍2-Context
查看>>
面向对象——(7)抽象类
查看>>
JNI初级:android studio生成so文件详细过程
查看>>
ajax方法总结
查看>>
TTylinux 最小的系统(带GCC)
查看>>
silverlight imagesource赋值与转换
查看>>
微端启动器LAUNCHER的制作之MFC版二(下载)
查看>>
Bootstrap网格系统
查看>>
mysql主从同步配置
查看>>
单独编译kvm模块
查看>>
基于SQL调用Com组件来发送邮件
查看>>
关于Mysql select语句中拼接字符串的记录
查看>>
动态规划 例子与复杂度
查看>>
安装webpack-dev-server后,npm run dev报错
查看>>
[BZOJ4567][SCOI2016]背单词(Trie+贪心)
查看>>
15软工课后作业01—15100120
查看>>
git回退到某个版本并提交
查看>>
python学习笔记-day02 格式化输出
查看>>
《我是一只IT小小鸟》读后感
查看>>
Jquery元素选取、常用方法
查看>>