Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 10.01.2020
Сообщений: 71

Необходимо создать цикл с nc файлами

13.01.2020, 00:08. Показов 1262. Ответов 6

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Я недавно начал использовать Matlab в своей научной работе. Мне поставили задачу построить 132 карты температуры поверхности моря. Код я смог сформировать сам. В начале я читаю ncdf файл и выделяю нужные мне матрицы. Следом перевожу температуру в цельсии из кельвинов и "закаршиваю" NaN отрицательные значения. Затем строю полученный результат. И сохраняю отдельной функцией. Выглядит это так:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%%Считываю нужные параметры с nc файлов
latitude = ncread('20190914011000-OSPO-L2P.nc', 'lat');
longitude = ncread('20190914011000-OSPO-L2P.nc', 'lon');
SST = ncread('20190914011000-OSPO-L2P.nc', 'sea_surface_temperature');
 
%%Произвожу расчет ТПМ
SSTCalcul=SST-273,15;
SSTCalcul(SSTCalcul<=0)=NaN
 
%%Строю карту ТПМ
figure ('Units', 'normalized', 'OuterPosition', [0 0 1 1])
worldmap([68 82],[15 68]);
setm(gca,'mapprojection','mercator');
geoshow(latitude,longitude,SSTCalcul,'displaytype','surface')
caxis([-0.001 12]);
geoshow(sh);
colormap (jet);
colorbar('Position',[0.708 0.156 0.0181 0.760]); %position of scale
 
%%Сохраняю полученное изображение
set(gcf, 'Color', 'w') %map without big white border
export_fig('-r150', 'D:\ALEX 4\MATLAB\Results\20180702000000_VIIRS.png'); %function of save map
Больше всего времени отнимает перерасчет матрицы, так как ее размер 3200X5408 и создание Nan значений. Можно ли как-то этот код сделать в цикле, чтобы не проводить 132 вычисления и каждую карту отдельно не сохранять, сидя у компьютера целый день... Или хотя бы часть кода перевести в цикл. Посмотрел примеры, но дальше расчетов матриц ничего путного для себя не нашел. Спасибо большое за помощь и спасибо, что уделили время!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.01.2020, 00:08
Ответы с готовыми решениями:

Необходимо создать бесконечный цикл
Необходимо создать цикл(бесконечный) #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;sys/resource.h&gt; int main(int argc,...

Необходимо создать цикл на прибавление 1
Здраствуйте форумчане Необходимо значит создать цикл который прибавляет к некоторому результату +1 это действие выполняется при нажатии...

Необходимо правильно создать цикл в интерактивной программе
могу ошибаться с расположением поста, но не нашел ничего подходящего... нужно правильно сформулировать цикл (я только изучаю данный язык,...

6
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
13.01.2020, 00:46
Цитата Сообщение от Aleksandr989 Посмотреть сообщение
Можно ли как-то этот код сделать в цикле,
можно, главное, правильно имена файлов определить..
0
1 / 1 / 0
Регистрация: 10.01.2020
Сообщений: 71
13.01.2020, 01:29  [ТС]
Так может их как-то сократить, например просто оставить время в файле?
'20190914011000-OSPO-L2P.nc' - 0110.nc. Или это не обязательно? Или каким тогда оператором в данном случае пользоваться For или While? Скорее всего второй, но может как-то первым можно обойтись?..)
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
13.01.2020, 01:35
сокращать ничего не надо, главное, понять, по какому принципу меняются названия...
цикла for достаточно, если знаете конкретное число файлов.
0
1 / 1 / 0
Регистрация: 10.01.2020
Сообщений: 71
13.01.2020, 01:58  [ТС]
Да, к сожалению, файлы не просто изменяются. Цикл изменения времени такой. Спутник в течении 5 суток полностью покрывает планету. Съемка производится каждые 10 минут. Я выбрал и скачал необходимые файлы, в котором есть мой район исследований. Но цикличность наименований файлов непростая. В начале он пролетает несколько часов над моим районом с интервалом 1:40 минут:
20190914 1:10
20190914 2:50
20190914 4:30
20190914 6:10
20190914 7:50
20190914 9:30
Потом он не пролетает необходимый мне район ровно 12 часов. И так 4 суток.
20190914 21:30
20190914 23:10
20190915 0:50
20190915 2:30
20190915 4:10
20190915 5:50
20190915 7:30
20190915 9:10
20190915 21:10
20190915 22:50
20190916 0:30
20190916 2:10
20190916 3:50
20190916 5:30
20190916 7:10
20190916 8:50
20190916 10:30
20190916 22:30
20190917 0:10
20190917 1:50
20190917 3:30
20190917 5:10
20190917 6:50
20190917 8:30
20190917 10:10
20190917 22:10
20190917 23:50
20190918 1:30
20190918 3:10
20190918 4:50
20190918 6:30
20190918 8:10
20190918 9:50
20190918 21:50
20190918 23:30
А на пятые сутки он возвращается к своей исходной позиции.
20190919 1:10
Отсюда и наименования файлов нестабильны. Т.е. сначала идет дата - 20190914, потом время - 011000, потом уже уровень обработки - OSPO-L2P. У меня есть список файлов в excel, может им просто стандартные наименования присвоить:1,2,3. А потом уже смотреть по excel, какая карта к какому времени и суткам предназначена... Если бы названия файлов были бы 1,2,3..до 132 было бы проще с циклом работать?
0
 Аватар для Krasme
7244 / 5097 / 2151
Регистрация: 02.02.2014
Сообщений: 13,458
13.01.2020, 02:02
Цитата Сообщение от Aleksandr989 Посмотреть сообщение
есть список файлов в excel
можно из excel загрузить таблицу имен в виде массива, а в цикле обращаться по номеру в массиве и получать имя текущего файла.
надо стараться минимизировать ручную работу...
0
1 / 1 / 0
Регистрация: 10.01.2020
Сообщений: 71
18.01.2020, 18:20  [ТС]
Если кому понадобиться, что-то вроде такого получилось:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for i=1:1 (здесь можно вставить и любые другие имена файлов, главное, чтобы был порядок... Как, собственно и писали выше)
latitude = ncread([num2str(i) '.nc'], 'lat');
longitude = ncread([num2str(i) '.nc'], 'lon');
SST = ncread([num2str(i) '.nc'], 'sst');
[longitude,latitude]=ndgrid(longitude,latitude);
figure ('Units', 'normalized', 'OuterPosition', [0 0 1 1])
worldmap([68 82.5],[55 105]);
setm(gca,'mapprojection','mercator');
geoshow(latitude,longitude,SST,'displaytype','surface')
caxis([-0.001 12]);
geoshow(sh);
colormap(jet);
colorbar('Position',[0.708 0.156 0.0181 0.760]); 
set(gcf, 'Color', 'w') 
export_fig('-r150',['D:\ALEX 4\MATLAB\Results\VIIRS_',num2str(i)],'-png');
end
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2020, 18:20
Помогаю со студенческими работами здесь

Необходимо создать много файлов, используя цикл
Недавно появилась такая задача: нужно, используя цикл, сделать много папок. Проблема в том, что папка при первом прохождении цикла...

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Необходимо создать цикл расчета не для одной станции, а для всех (их всего 518) находящихся в файле.
Здравствуйте, у меня по циклу тоже есть вопрос, простая задача, но я туплю и не могу ее решить. Есть матлаб код, для расчета значения...

Цикл: Не могу создать цикл для switch
не могу создать цикл для switch

Необходимо написать цикл
Дано: S0=0.3 cp=0.0002*\theta +0.4598 \lambda =0.016*\theta +14.076 Необходимо: Решать указанные ниже зависимости...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru