处理一下异常值

本文介绍了一段使用MATLAB编写的代码,用于生成风速时程并实时处理数据,通过三西格玛准则检测并替换异常值,展示了风速数据在每分钟内的平均值和标准差计算过程。
摘要由CSDN通过智能技术生成

clear

clc

close all

% 生成风速时程

time_length = 5 * 60; % 5分钟,单位:秒

sampling_rate =15; % 采样频率,单位:Hz

total_samples = time_length * sampling_rate; % 总采样点数

% 生成随机风速数据

wind_speed = randn(1, total_samples);

wind_speed(100)=6;

wind_speed(300)=6;

wind_speed(500)=6;

wind_speed(700)=6;

hhh=wind_speed;

% 对风速数据进行处理

for i = 1:5

% 计算当前分钟内的索引范围

start_index = (i - 1) * 60 * sampling_rate + 1;

end_index = i * 60 * sampling_rate;

% 获取当前分钟内的风速数据

minute_data = wind_speed(start_index:end_index);

% 计算平均值和标准差

mean_value = mean(minute_data);

std_dev = std(minute_data);

% 计算三西格玛准则的阈值

threshold = 3 * std_dev;

% 将不满足三西格玛准则的值替换为平均值

outliers = abs(minute_data - mean_value) > threshold;

minute_data(outliers) = mean_value;

% 更新原始风速数据

wind_speed(start_index:end_index) = minute_data;

end

figure(1)

time_axis = (0:total_samples-1) / sampling_rate;

plot(time_axis, hhh);

hold on

plot(time_axis, wind_speed);

hold off

xlabel('时间 (秒)');

ylabel('风速');

title('风速时程');

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值