You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制阈值以下各连续风速时长的概率分布图?

统计风速低于阈值的连续时长频次并绘制占比分布图(MATLAB实现)

你已经通过代码计算出风速低于3m/s的最长连续时长为43小时,接下来可以通过以下步骤统计各时长的出现频次并绘制占比分布图:

步骤说明

  1. 统计各时长的出现频次:基于已得到的durations数组,统计1到43小时每个时长对应的出现次数,包含频次为0的时长(确保X轴覆盖完整范围)。
  2. 计算占比:将每个时长的频次除以所有低于阈值的连续时段总数(或全年总小时数,可根据需求选择),得到占比。
  3. 绘制分布图:用柱状图展示X轴(1-43小时)与Y轴(对应占比)的关系。

完整代码(在你现有代码基础上添加)

%Data import
Windspeed_hourly_mean = xlsread('Windspeed_hourly.xlsx','B2:B8763');
WHM=Windspeed_hourly_mean;

%Parameters
threshold = 3;
windHeight = 50;
hubHeight = 150;

%Windspeed calculation at hub height
wind60 = WHM .* log(60/0.0001) ./ log(windHeight/0.0001);
windHub = wind60 .* (hubHeight ./ 60) .^ 0.115;

isBelow = (windHub < threshold); % 生成低风速时段的逻辑向量
isBelow = [false; isBelow; false]; % 确保向量首尾为false,避免边界时段漏统计
transitions = diff(isBelow); % 识别状态切换点:1为低风速开始,-1为低风速结束
starts = find(transitions==1); % 低风速时段的起始索引
ends = find(transitions==-1); % 低风速时段的结束索引
durations = ends - starts; % 计算每个低风速时段的连续时长
t_delta = max(durations); % 最长连续时长

% ------------------- 新增统计与绘图代码 -------------------
% 1. 生成要统计的所有时长范围(1到最长时长)
all_durations = 1:t_delta;

% 2. 统计每个时长的出现频次
% 设置bins边界为整数±0.5,确保每个整数时长对应独立统计区间
[frequency, ~] = histcounts(durations, [all_durations-0.5, t_delta+0.5]);

% 3. 计算占比:两种可选方式,根据需求选择一种
% 方式1:占所有低风速连续时段总数的比例
proportion = frequency / sum(frequency);
% 方式2:占全年总小时数的比例(该时长对应的总小时数/全年小时数)
% proportion = (all_durations .* frequency) / length(windHub);

% 4. 绘制柱状图
figure('Position', [100, 100, 800, 500]);
bar(all_durations, proportion, 'FaceColor', '#1f77b4');
xlabel('连续时长(小时)');
ylabel('出现占比');
title('风速低于3m/s的连续时长占比分布');
xticks(all_durations); % 显示所有X轴刻度
grid on;
set(gca, 'YGrid', 'on', 'XGrid', 'off');

% 可选:在柱子上方标注频次数值
for i = 1:length(all_durations)
    text(all_durations(i), proportion(i), num2str(frequency(i)), ...
         'HorizontalAlignment', 'center', 'VerticalAlignment', 'bottom');
end
% ---------------------------------------------------------

plot(windHub,'b') % 原有的风速时序图,可保留或移至新figure窗口

Windspeed_ts = timeseries(windHub);
save('Windspeed_ts.mat','Windspeed_ts','-v7.3');

代码解释

  • 频次统计:histcounts通过设置精准的bins边界,确保每个整数时长被单独统计,即使某个时长没有出现(频次为0)也会被包含,保证X轴的完整性。
  • 占比计算:提供两种占比计算方式:
    • 方式1反映某时长的连续时段在所有低风速时段中的占比;
    • 方式2反映该时长对应的总小时数在全年中的占比。
  • 绘图优化:添加了完整刻度显示、网格和数值标注,让分布图更清晰直观。

内容的提问来源于stack exchange,提问作者Worstenbrood96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:55:19