Применить вычисление к каждому элементу одновременно в массиве в Matlab с помощью функции (версия 2013b) - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть матрица (тип: double) размером 106 x 103. Матрица представляет европейские сеточные данные о температуре для одного временного шага (дня).

Для каждого дня я хочу вычислить градусы дней(тепловое время) для вида на основе температуры, записанной для каждой «ячейки» (элемента i, j) в матрице с использованием формулы, которую я кодировал в Matlab на основе синусоидального подхода.

Итак,в конечном итоге я хочу применить к моей матрице вычисление, которое обеспечит индивидуальный вывод для каждой ячейки сетки (элемент i, j) в зависимости от записанных там температурных данных.Я мог бы сделать это с помощью цикла, но мне нужно накапливать эти градусные дни за несколько лет, поэтому я бы предпочел найти способ применения вычисления к каждому элементу в ежедневной матрице одновременно (и затем циклически повторять дни (матрицы)).Из того, что я прочитал, вы можете использовать cellfun, если ваша матрица является массивом ячеек (у меня нет).Затем я также посмотрел на опцию bsxfun, но кажется, что функции - это просто стандартные функции, например, среднее, максимальное и т. Д. Итак, сейчас я рассматриваю использование arrayfun в сочетании с функцией, которую я создаю из своего алгоритма для вычисленияградусные дни.Я пытался написать тестовую функцию, но Matlab продолжает выдавать ту же ошибку: я набираю:

function output=degreedays(x)

и Matlab отбрасывает назад:

Error: Function definitions are not permitted in this context.

Может кто-нибудь сказать мне, что я делаю не так?Почему он не принимает объявление имени функции?

1 Ответ

0 голосов
/ 26 сентября 2018

MATLAB не позволяет вам определять именованные функции, подобные этой, в командной строке.Вам нужно поместить определение вашей функции в файл.Затем MATLAB может вызывать эту функцию по имени файла, поэтому в вашем случае поместите определение вашей функции в файл с именем degreedays.m.

Подробнее см. В документе: https://uk.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...