如何绘制阈值以下各连续风速时长的概率分布图?
统计风速低于阈值的连续时长频次并绘制占比分布图(MATLAB实现)
你已经通过代码计算出风速低于3m/s的最长连续时长为43小时,接下来可以通过以下步骤统计各时长的出现频次并绘制占比分布图:
步骤说明
- 统计各时长的出现频次:基于已得到的
durations数组,统计1到43小时每个时长对应的出现次数,包含频次为0的时长(确保X轴覆盖完整范围)。 - 计算占比:将每个时长的频次除以所有低于阈值的连续时段总数(或全年总小时数,可根据需求选择),得到占比。
- 绘制分布图:用柱状图展示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
相关产品推荐
相关产品推荐

