Небольшой отчёт на MATLAB по счётчикам электроэнергии, один CSV на день, столбцы = счётчики, строки = 30-минутные интервалы. Запускаю через matlab -batch run_report из терминала Neovim. Финансам он нужен сегодня, так что настроение у меня не очень.
В 2026-10-30 три интервала, и цифры правильные. В 2026-10-31 только один интервал, шлюз большую часть дня лежал:
M101,M102,M103,M104
0.44,0.30,1.05,0.05
Общий расход кВт·ч за этот день выводится как [0.44 0.74 1.79 1.84]. Стоимость неверная таким же образом, растёт слева направо. Итог должен быть просто четырьмя числами из строки. peak_kwh и n_intervals верные, так что что-то не так только в итогах.
function report = meter_report(deltas, cfg)
running = cumsum(deltas);
report.total_kwh = running(end, :);
report.cost = report.total_kwh * cfg.tariff;
report.peak_kwh = max(deltas, [], 1);
report.n_intervals = size(deltas, 1);
end
batches{k} = readmatrix(fullfile(dataDir, names{k}));
size(batches{k}) даёт 1x4, так что файл читается нормально. Подозреваю, что readmatrix делает что-то странное с заголовком и одной строкой данных (docs), либо эта нативная сборка под Apple silicon ведёт себя иначе. На другой машине это пока никто не запускал. Пробовал format long, перезапуск MATLAB, удаление заголовка. Ничего не изменилось.
Сортировка файлов через natsortfiles из стандартной библиотеки, так что дело не в ней.
Почему только этот день? Тот же код, тот же формат. Кто-нибудь сталкивался?