1 问题描述
从金湖热力获取的数据,每分钟大概有30个数据,数据建模过程中,无需这么密集的数据,所以,每分钟选取一个数据。软件环境为matlab2015b.
2解决步骤
第一,将数据导入,取出时间戳,以元胞数组格式存放;
第二,提取时间戳中月,日,时,分数据,组成新的元胞数组;
第三,新的元胞数组第i行与其后100行,依次比较,若存在相等的行,则记A(i)的值不为0,若不存在相等的行,则记A(i)的值为0;
第四,将矩阵A中不为0的序号取出存到B,令时间戳和数值阵的第B个为空,剩下的数据为不重复数据。
程序:
clear;clc;
od=importdata('F:\kd.xlsx'); %数据导入
time=od.textdata(:,1); % 获取时间 格式为:2017/2/22 上午1:00:00
value=od.textdata(:,2); % 获取值 类型为str
vv=str2double(value); % 类型转为double,vv为数值矩阵
n1=length(time); % 取数据长度
n2=length(value);
%======提取月日时分==========
for i=1:n2
th{i}=time{i}(6:17); % 从时间戳中 取月日时分
end
%=========================
% 将第i个时间与其后100个比较,若不存在相等时间,则记A(i)为0,否则不为0
% 不为0的序号存在相等,另其为空,余下时间均不等。
for i=1:n2-100
for j=1:100
if sum(th{i}==th{i+j})==12 %每个字符相等
A(i)=i+j;
break;
else
A(i)=0;
end
end
end
B=find(A~=0);
t=time;
v=vv;
t(B)=[];
v(B)=[];
浙公网安备 33010602011771号