Применение функции к строкам таблицы или расписания
применяет функцию B = rowfun(func,A)func к каждой строке таблицы или расписания A и возвращает результаты в таблице или расписании B.
func принимает size(A,2) входные данные.
Если A является расписанием и func агрегирует данные по группам строк, затем rowfun назначает время первой строки из каждой группы строк в A как соответствующее время строки в B. Возвратиться B в виде таблицы без времени строки, укажите 'OutputFormat' как 'table'.
применяет функцию B = rowfun(func,A,Name,Value)func к каждой строке таблицы A с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары.
Например, можно указать переменные для передачи функции. func и как звонить func.
Применить функцию hypot к каждой строке таблицы 5 на 2 A чтобы найти кратчайшее расстояние между переменными x и y.
Создание таблицы, A, с двумя переменными числовых данных.
rng('default')
x = randi(10,[5,1]);
y = randi(10,[5,1]);
A = table(x,y)A=5×2 table
x y
__ __
9 1
10 3
2 6
10 10
7 10
Примените функцию, hypot, к каждой строке A. Функция hypot принимает два входа и возвращает один выход.
B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
z
______
9.0554
10.44
6.3246
14.142
12.207
B является таблицей.
Добавьте вывод функции, B, во входную таблицу, A.
[A B]
ans=5×3 table
x y z
__ __ ______
9 1 9.0554
10 3 10.44
2 6 6.3246
10 10 14.142
7 10 12.207
Определите и примените геометрическую модель броуновского движения к диапазону параметров.
Создание функции в файле с именем gbmSim.m который содержит следующий код.
% Copyright 2015 The MathWorks, Inc. function [m,mtrue,s,strue] = gbmSim(mu,sigma) % Discrete approximation to geometric Brownian motion % % [m,mtrue,s,strue] = gbmSim(mu,sigma) computes the % simulated mean, true mean, simulated standard deviation, % and true standard deviation based on the parameters mu and sigma. numReplicates = 1000; numSteps = 100; y0 = 1; t1 = 1; dt = t1 / numSteps; y1 = y0*prod(1 + mu*dt + sigma*sqrt(dt)*randn(numSteps,numReplicates)); m = mean(y1); s = std(y1); % Theoretical values mtrue = y0 * exp(mu*t1); strue = mtrue * sqrt(exp(sigma^2*t1) - 1); end
gbmSim принимает два входа, mu и sigmaи возвращает четыре выходных сигнала, m, mtrue, s, и strue.
Определите таблицу, params, содержащий параметры для ввода в броуновскую модель движения.
mu = [-.5; -.25; 0; .25; .5]; sigma = [.1; .2; .3; .2; .1]; params = table(mu,sigma)
params =
5x2 table
mu sigma
_____ _____
-0.5 0.1
-0.25 0.2
0 0.3
0.25 0.2
0.5 0.1
Примените функцию, gbmSim, к строкам таблицы, params.
stats = rowfun(@gbmSim,params,... 'OutputVariableNames',... {'simulatedMean' 'trueMean' 'simulatedStd' 'trueStd'})
stats =
5x4 table
simulatedMean trueMean simulatedStd trueStd
_____________ ________ ____________ ________
0.60501 0.60653 0.05808 0.060805
0.77916 0.7788 0.161 0.15733
1.0024 1 0.3048 0.30688
1.2795 1.284 0.25851 0.25939
1.6498 1.6487 0.16285 0.16529
Четыре имени переменных, указанные 'OutputVariableNames' аргумент пары имя-значение указывает, что rowfun должны получить четыре выхода от gbmSim. Можно указать меньшее количество имен выходных переменных для возврата меньшего количества выходных данных из gbmSim.
Добавьте вывод функции, stats, на вход, params.
[params stats]
ans =
5x6 table
mu sigma simulatedMean trueMean simulatedStd trueStd
_____ _____ _____________ ________ ____________ ________
-0.5 0.1 0.60501 0.60653 0.05808 0.060805
-0.25 0.2 0.77916 0.7788 0.161 0.15733
0 0.3 1.0024 1 0.3048 0.30688
0.25 0.2 1.2795 1.284 0.25851 0.25939
0.5 0.1 1.6498 1.6487 0.16285 0.16529
Создание таблицы, A, где g является переменной группировки.
rng('default')
g = randi(3,[15,1]);
x = rand([15,1]);
y = rand([15,1]);
A = table(g,x,y)A=15×3 table
g x y
_ ________ ________
3 0.14189 0.70605
3 0.42176 0.031833
1 0.91574 0.27692
3 0.79221 0.046171
2 0.95949 0.097132
1 0.65574 0.82346
1 0.035712 0.69483
2 0.84913 0.3171
3 0.93399 0.95022
3 0.67874 0.034446
1 0.75774 0.43874
3 0.74313 0.38156
3 0.39223 0.76552
2 0.65548 0.7952
3 0.17119 0.18687
Определите анонимную функцию, func, для вычисления средней разницы между x и y.
func = @(x,y) mean(x-y);
Найти среднюю разницу между переменными в группах 1, 2, и 3 определяется переменной группировки, g.
B = rowfun(func,A,... 'GroupingVariable','g',... 'OutputVariableName','MeanDiff')
B=3×3 table
g GroupCount MeanDiff
_ __________ ________
1 4 0.032744
2 3 0.41822
3 8 0.14656
Переменная GroupCount указывает количество строк в A для каждой группы.
func - ФункцияФункция, заданная как дескриптор функции. Функцию можно определить в файле или как анонимную функцию. Если func соответствует более чем одному файлу функции (то есть, если func представляет собой набор перегруженных функций), MATLAB ® определяет, какую функцию следует вызвать на основе класса входных аргументов.
func может принимать не более size(A,2) входные данные. По умолчанию rowfun возвращает первый вывод func. Возврат нескольких выходных данных из func, используйте 'NumOutputs' или 'OutputVariableNames' аргументы пары имя-значение.
Пример: func = @(x,y) x.^2+y.^2; принимает два входных значения и находит сумму квадратов.
A - Входная таблицаВходная таблица, заданная как таблица или расписание.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'InputVariables',2 использует только вторую переменную в A в качестве входных данных для func.'InputVariables' - спецификаторы для выбора переменных A для передачи в funcСпецификаторы для выбора переменных A для передачи в func, указанная как пара, разделенная запятыми, состоящая из 'InputVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив, логический вектор или дескриптор функции.
При указании 'InputVariables' как дескриптор функции, то он должен возвратить логический скаляр, и rowfun передает только переменные в A где функция возвращает 1 (true).
'GroupingVariables' - Одна или несколько переменных в A которые определяют группы строкОдна или несколько переменных в A которые определяют группы строк, указанные как разделенная запятыми пара, состоящая из 'GroupingVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.
Значение 'GroupingVariables' указывает, какие переменные таблицы являются переменными группировки, а не их типами данных. Переменная группировки может быть числовой или иметь тип данных categorical, calendarDuration, datetime, duration, logical, или string.
Строки в A которые имеют одинаковые значения переменной группировки, принадлежат к одной группе. rowfun применяется func к каждой группе строк, а не отдельно к каждой строке A. Выходные данные, B, содержит одну строку для каждой группы.
Если какая-либо переменная группирования содержит NaNs или отсутствующие значения (например, NaTs, неопределенные категориальные значения или отсутствующие строки), то соответствующие строки не принадлежат ни к одной группе и исключаются из вывода.
Метки строк могут быть переменными группировки. Можно группировать только по меткам строк, по одной или нескольким переменным в Aили на метках строк и переменных вместе.
Если A является таблицей, то метки являются именами строк.
Если A является расписанием, то метки - время строки.
'SeparateInputs' - Индикатор для вызова func с отдельными входамиtrue (по умолчанию) | false | 1 | 0Индикатор для вызова func с отдельными входами, заданными как разделенная запятыми пара, состоящая из 'SeparateInputs' и либо true, false, 1, или 0.
|
Это поведение по умолчанию. |
|
|
'ExtractCellContents' - Индикатор для передачи значений из переменных ячейки в funcfalse (по умолчанию) | true | 0 | 1Индикатор для передачи значений из переменных ячейки в func, указанная как пара, разделенная запятыми, состоящая из 'ExtractCellContents' и либо false, true, 0, или 1.
|
Для сгруппированных вычислений значения в каждой группе переменной ячейки должны допускать вертикальную конкатенацию. |
|
Это поведение по умолчанию. |
'OutputVariableNames' - Наименования переменных для выходов funcИмена переменных для выходов func, указанная как пара, разделенная запятыми, состоящая из 'OutputVariableNames' и символьный вектор, массив ячеек символьных векторов или строковый массив с именами, которые являются непустыми и различными. Количество имен должно равняться количеству выходов, которые требуется вывести из func.
Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB. Если допустимые идентификаторы MATLAB недоступны для использования в качестве имен переменных, MATLAB использует массив ячеек N символьные векторы формы {'Var1' ... 'Var где N'}N - количество переменных. С помощью функции можно определить допустимые имена переменных MATLAB. isvarname.
'NumOutputs' - Количество выходов из func0 | положительное целое числоКоличество выходов из func, указанная как пара, разделенная запятыми, состоящая из 'NumOutputs' и 0 или положительное целое число. Целое число должно быть меньше или равно возможному числу выходов из func.
Пример: 'NumOutputs',2 причины rowfun звонить func с двумя выходами.
'OutputFormat' - Формат B'table' (по умолчанию) | 'timetable' | 'uniform' | 'cell'Формат B, указанная как пара, разделенная запятыми, состоящая из 'OutputFormat' и либо значение 'table', 'uniform', или 'cell'.
|
Это формат вывода по умолчанию. |
|
Если |
|
|
|
|
'ErrorHandler' - Функция для вызова, если func терпит неудачуФункция для вызова, если func ошибка, указанная как пара, разделенная запятыми, состоящая из 'ErrorHandler' и дескриптор функции. Определите эту функцию так, чтобы она повторяла ошибку или возвращала допустимые выходы для функции func.
MATLAB вызывает указанную функцию обработки ошибок с двумя входными аргументами:
Структура со следующими полями:
| Идентификатор ошибки. |
| Текст сообщения об ошибке. |
| Индекс строки или группы, в которой произошла ошибка. |
Набор входных аргументов для функции func во время ошибки.
Например,
function [A, B] = errorFunc(S, varargin)
warning(S.identifier, S.message);
A = NaN; B = NaN;arrayfun | cellfun | convertvars | findgroups | groupsummary | isvarname | splitapply | structfun | varfun | vartype
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.