В качестве предисловия я довольно неопытен, поэтому моя терминология может быть выключена, поэтому я ничего не мог найти при поиске на форумах.Эффективно автоматизировать 4-мерное сокращение массива на основе определенного значения измерения
У меня есть огромный 4D массив данных высоты атмосферы (hgt) за год 1900, содержащийся в файле netcdf. Понятно, что масштаб моего проекта прост, создайте климатологию высоты (среднее значение высоты в каждой точке сетки для каждого дня года) на пару конкретных уровней давления, включающих 141 год данных (каждый год файл данных имеет идентичный формат) ,
hgt_1900 = ncread('hgt.1900.nc','hgt')
n = numel(hgt_1900)
n = 143488800
size(hgt_1900)
ans = 180 91 24 365
Размеры: долгота, широта, уровень давления и время (дни). Учитывая размер массива, я думал, ограничение данных на один уровень давления (например: уровень 4) на один день был путь
hgt_1900_4_Day1 = hgt_1900(1:180, 1:91, 4, 1)
Это возвращает 180x91 одну переменную, которая отлично! Однако, к тому времени, когда я добрался до hgt_1900_4_Day3, я понял, что должен быть способ автоматизировать этот процесс. Так вот что я пробовал:
for day = 1:365
hgt_1900_4_Day'day' = hgt_1900(1:180, 1:91, 4, 'day')
day = +1
end
Error: File: Height850.m Line: 2 Column: 20
Unexpected MATLAB expression.
Может ли кто-нибудь пролить свет на способы исправить это неожиданное выражение? Я попытался (возможно, ошибочно), используя функцию genvarname вместо, которые должным образом генерируемые имена переменных, но сохраняю 4D переменного формат и не получаю правильные данные дня:
for day = 1:356
t = hgt_1900(1:180, 1:91, 4, 'day');
v = genvarname('hgt_1900_4_Day', who);
eval([v ' = t'])
end
size(hgt_1900_4_Day1)
ans = 180 91 1 3
size(hgt_1900_4_Day350)
ans = 180 91 1 3
Предполагая, что я могу получить выше для работы, я планировал запустить этот скрипт для каждого года данных. Затем создайте климатологию, усредняя hgt_1900_4_Day50, hgt_1901_4_Day50 и т. Д.
Учитывая совокупный размер данных за 141 год (20231920800 элементов). Я чувствую, что эффективность имеет решающее значение, поэтому, пожалуйста, поделитесь любыми другими, более эффективными способами прибытия в одно и то же место!
спасибо!
Немного смущен. Вы хотите, чтобы ежегодная климатология (то есть средняя за все дни в конкретном году) для определенного уровня давления? – N1B4
Ответил на вопрос ниже! – Ejk3md