matlab中实现滑动窗口的方法

clc;
clear;

% 此脚本中对于选取的时间阈值进行判断



data = xlsread('整理完的数据.xlsx','9-27X');
% 获取SO2均值数据  CO2均值数据
[datar,datac] = size(data);
avgSO2 = data(:,datac - 1);
avgCO2 = data(:,datac); 
[avgSO2r,avgSO2c] = size(avgSO2);    

% avgSO2FirstStep=[];
% count = 1;
for r = 1:avgSO2r        
    rs = avgSO2(r);
    if (rs < 0) || (rs > 5)
%         avgSO2FirstStep(count,1) = rs;
%         count = count+1;
    avgSO2(r) = nan;
    end
end



% 第一步整理avgCO2数据
[avgCO2r,avgCO2c] = size(avgCO2);    
% avgCO2FirstStep=[];
% count = 1;
for r = 1:avgCO2r        
    rs = avgCO2(r);
    if (rs < 0) && (rs > 5000)
%         avgCO2FirstStep(count,1) = rs;
%         count = count+1;
    avgCO2(r) = nan;
    end
end

% 每十条数据存储在processSO2的一行当中
processSO2 = [];
count = 1;
% 标志processSO2中的当前存储行数
processSO2Row = 1;
% 滑窗的初始位置、结束位置
slideWindowStart = 0;
slideWindowEnd = 0;
% 步长
step = 10;
% 获取avgSO2的行列
[avgSO2r,avgSO2c] = size(avgSO2);
for r = 1:avgSO2r
    slideWindowStart = r;
    slideWindowEnd = slideWindowStart + step - 1;
    if slideWindowEnd == avgSO2r
        for eachStep = slideWindowStart:avgSO2r
            processSO2(processSO2Row,count) = avgSO2(eachStep);
            count = count + 1;
        end
        break;
    end
    for eachStep = slideWindowStart:slideWindowEnd
        processSO2(processSO2Row,count) = avgSO2(eachStep);
        count = count + 1;
    end
    % 一次滑窗结束后,当前存储行数、count位、滑窗的开始结束位置都发生改变
    processSO2Row = processSO2Row + 1;
    count = 1;
end
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值