Применить функцию к строкам таблицы или расписания
применяет функцию B = rowfun(func,A)func в каждую строку таблицы или timetable A и возвращает результаты в таблице или timetable 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'... 'Вар 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 fails, задается как разделенная разделенными запятой парами, состоящая из '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.