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

如何在MATLAB中拆分白天与夜间时段的气温数据?

修正后的MATLAB代码及问题分析

原代码的核心错误

  • 矩阵赋值逻辑错误:原代码直接将数据写入与原时间步对应的索引位置,导致矩阵中出现大量未赋值的空缺(如第一天赋值1-13后,14-24位置为NaN),最终第三维尺寸等于最后一天的时间步索引,而非有效数据的总数。
  • 未按需求拼接数据:没有将每天的目标时段数据按顺序整合,反而保留了原时间步的分散索引结构,不符合“拆分出仅含昼夜时段的连续矩阵”的需求。

正确代码实现

% 定义基础参数
num_hours_per_day = 24;
total_timesteps = size(ST_data, 3);
num_days = total_timesteps / num_hours_per_day; % 1176/24=49天,确保能整除

% 初始化昼夜时段的时间步索引向量
daytime_indices = [];
nighttime_indices = [];

% 遍历每一天,收集对应时段的索引
for day_offset = 0 : num_days - 1
    current_base = day_offset * num_hours_per_day;
    % 白天:UTC时间步 current_base+1 到 current_base+13(对应IST 6:30-18:30)
    daytime_indices = [daytime_indices, current_base + 1 : current_base + 13];
    % 夜间:UTC时间步 current_base+13 到 current_base+24(对应IST 18:30-次日5:30)
    nighttime_indices = [nighttime_indices, current_base + 13 : current_base + 24];
end

% 提取昼夜数据矩阵
daytime_matrix = ST_data(:,:,daytime_indices);
nighttime_matrix = ST_data(:,:,nighttime_indices);

尺寸验证

  • daytime_matrix尺寸:303×185×637(49天×13个白天时间步)
  • nighttime_matrix尺寸:303×185×588(49天×12个夜间时间步)

可选调整(去除重叠时间步)

如果不需要两个矩阵共享UTC13(IST18:30)这个时间点,可将白天的索引范围改为current_base + 1 : current_base + 12,此时昼夜矩阵的第三维均为588,总时间步与原数据完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:13:21