电力系统用户负荷数据标记峰谷时段

一、 导入原始负荷数据 Excel 文件
input_filename = 'your_data_file.xlsx'; % 修改为你的实际文件名
output_filename = 'output_peak_valley.xlsx'; % 修改为导出的文件名

 `input_filename` 是要读取的 Excel 文件的名称,这里需要替换为你实际的数据文件名。-`output_filename` 是你要保存结果的 Excel 文件名称,可以按需修改。

二、读取负荷数据,假设编号在第一列,日期在第六列,负荷数据从第七列开始
data_table = readtable(input_filename);

`readtable` 函数用于从 Excel 文件中读取数据,并将其存储在 `data_table` 中。  
 假设表格中的用户编号列名称是 `SerialNumber`,日期列名称是 `Date`,负荷数据从第七列(`P1` 到 `P96`)开始。

三、 初始化输出表格,保留编号和日期
output_data = data_table(:, {'SerialNumber', 'Date'});

 这里初始化了一个输出表格 `output_data`,只保留编号 (`SerialNumber`) 和日期 (`Date`) 两列。

四、 获取负荷数据,从第七列开始
load_data = data_table(:, 7:end);

通过 `data_table(:, 7:end)` 语句,从原始表格中提取负荷数据,即第七列到最后一列。

五、 获取负荷数据的行数和列数
[num_rows, num_cols] = size(load_data);

 `num_rows` 和 `num_cols` 分别表示负荷数据的行数和列数,用于后续循环操作。

六、 初始化峰谷标记矩阵
peak_valley_data = zeros(num_rows, num_cols);

 创建一个大小与 `load_data` 相同的矩阵 `peak_valley_data`,初始值为零,存储峰谷平标记(峰为1,谷为-1,平为0)。

七、遍历每一行数据,计算平均值并标记峰谷
for i = 1:num_rows
    daily_data = table2array(load_data(i, :));  % 将每行数据转换为数组
    daily_avg = mean(daily_data);              % 计算当天的平均负荷
    
八、 标记峰谷平
  peak_valley_data(i, daily_data > daily_avg) = 1;   % 峰时段
    peak_valley_data(i, daily_data < daily_avg) = -1;  % 谷时段
    peak_valley_data(i, daily_data == daily_avg) = 0;  % 平时段
end

 使用 `for` 循环逐行遍历 `load_data`。
 `daily_data` 是当前行的数据转换为数组。
 `daily_avg` 计算当天的平均负荷值。
 根据每个时段的负荷值与当天平均值的比较:
    高于平均值的时段标记为峰(1)
    低于平均值的时段标记为谷(-1)
    等于平均值的时段标记为平(0)

九、 创建时间段列名称,一小时一段
time_labels = {};
for i = 0:23
    for j = 0:3
        start_minute = j * 15;
        end_minute = start_minute + 15;
        time_labels{end + 1} = sprintf('%02d:%02d-%02d:%02d', i, start_minute, i, end_minute);
    end
end

 使用嵌套循环生成时间段的列名称,从 `00:00-00:15` 到 `23:45-00:00`,每小时分为四段,每段15分钟。
`sprintf` 用于格式化时间段并添加到 `time_labels` 中。

十、 将标记结果转换为表格,列名称为时间段
peak_valley_table = array2table(peak_valley_data, ...
    'VariableNames', time_labels);

 `array2table` 函数将 `peak_valley_data` 转换为一个 MATLAB 表格。
 使用 `time_labels` 设置表格的列名称,使之与生成的时间段名称一致。

十一、 将标记结果与编号和日期合并
output_data = [output_data, peak_valley_table];

 将 `SerialNumber` 和 `Date` 列与峰谷标记表格合并,形成最终输出数据。

十二、导出结果为 Excel 文件
writetable(output_data, output_filename);
disp('峰谷平标记数据已成功导出为 Excel 文件!');

`writetable` 将合并后的数据导出为 Excel 文件,文件名为 `output_filename`。
使用 `disp` 函数输出一条消息,表示导出成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值