Примените функцию к строкам таблицы или расписания
B = rowfun(func,A)
B = rowfun(func,A,Name,Value)
применяет функциональный 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
, с двумя переменными числовых данных.
x = gallery('integerdata',10,[5,1],2); y = gallery('integerdata',10,[5,1],8); A = table(x,y)
A=5×2 table
x y
_ __
9 1
4 5
3 2
7 3
1 10
Примените функцию, hypot
, к каждой строке A
. Функциональный hypot
берет два входных параметров и возвращает один выходной параметр.
B = rowfun(@hypot,A,'OutputVariableNames','z')
B=5×1 table
z
______
9.0554
6.4031
3.6056
7.6158
10.05
B
является таблицей.
Добавьте функциональный вывод, B
, к входной таблице, A
.
[A B]
ans=5×3 table
x y z
_ __ ______
9 1 9.0554
4 5 6.4031
3 2 3.6056
7 3 7.6158
1 10 10.05
Задайте и примените модель геометрического броуновского движения к области значений параметров.
Создайте функцию в файле с именем 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
является группирующей переменной.
g = gallery('integerdata',3,[15,1],1); x = gallery('uniformdata',[15,1],9); y = gallery('uniformdata',[15,1],2); A = table(g,x,y)
A=15×3 table
g x y
_ _______ ________
3 0.24756 0.87516
3 0.4358 0.3179
3 0.97755 0.27323
2 0.85995 0.6765
3 0.30063 0.071171
2 0.26589 0.19659
3 0.13338 0.52908
2 0.7425 0.17176
1 0.85692 0.86996
2 0.24286 0.24369
3 0.19492 0.84291
2 0.39076 0.55766
1 0.29683 0.35681
1 0.39031 0.2324
2 0.18726 0.6476
Задайте анонимную функцию, 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 3 0.028298
2 6 0.032569
3 6 -0.10327
Переменная 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'InputVariables',2
использует только вторую переменную в A
как вход к func
.'InputVariables'
— Спецификаторы для выбора переменных A
, чтобы передать func
Спецификаторы для выбора переменных A
, чтобы передать func
, заданному как пара, разделенная запятой, состоящая из 'InputVariables'
и положительного целого числа, вектора положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк, логического вектора или указателя на функцию.
Если вы задаете 'InputVariables'
как указатель на функцию, то он должен возвратить логический скаляр, и rowfun
передает только переменные в A
, куда функция возвращает 1
(true
).
Группировка переменных
Одна или несколько переменных в A
, которые задают группы строкОдна или несколько переменных в A
, которые задают группы строк, заданных как пара, разделенная запятой, состоящая из 'GroupingVariables'
и положительного целого числа, вектора положительных целых чисел, вектора символов, массива ячеек из символьных векторов, массива строк или логического вектора.
Значение 'GroupingVariables'
задает, какие табличные переменные являются группирующими переменными, не их типами данных. Группирующая переменная может быть числовой, или иметь тип данных categorical
, calendarDuration
, datetime
, duration
, logical
или string
.
Строки в A
, которые имеют те же значения группирующей переменной, принадлежат той же группе. rowfun
применяет func
к каждой группе строк, а не отдельно к каждой строке A
. Вывод, B
, содержит одну строку для каждой группы.
Если какая-либо группирующая переменная содержит NaN
s или отсутствующие значения (такие как NaT
s, неопределенные категориальные значения или отсутствующие строки), то соответствующие строки не принадлежат никакой группе и исключены из вывода.
Метки строки могут быть группирующими переменными. Можно сгруппироваться на одних только этикетках строки на одной или нескольких переменных в A
, или на этикетках строки и переменных вместе.
Если A
является таблицей, то метки являются именами строки.
Если A
является расписанием, то метки являются временами строки.
'SeparateInputs'
— Индикатор для вызова func
с отдельными входными параметрамиtrue
(значение по умолчанию) | false
| 1
| 0
Индикатор для вызова func
с отдельными входными параметрами, заданными как пара, разделенная запятой, состоящая из 'SeparateInputs'
и или true
, false
, 1
или 0
.
|
Это поведение по умолчанию. |
|
|
'ExtractCellContents'
Индикатор, чтобы передать значения от переменных ячейки до func
false
(значение по умолчанию) | true
| 0
| 1
Индикатор, чтобы передать значения от переменных ячейки до func
, заданного как пара, разделенная запятой, состоящая из 'ExtractCellContents'
и или false
, true
, 0
или 1
.
|
Для сгруппированного вычисления значения в каждой группе в переменной ячейки должны позволить вертикальную конкатенацию. |
|
Это поведение по умолчанию. |
'OutputVariableNames'
Имена переменных для выходных параметров func
Имена переменных для выходных параметров func
, заданного как пара, разделенная запятой, состоящая из 'OutputVariableNames'
и вектора символов, массива ячеек из символьных векторов или массива строк, с именами, которые непусты и отличны. Количество имен должно равняться количеству выходных параметров, желаемых от func
.
Кроме того, имена переменных должны быть допустимыми идентификаторами MATLAB. Если допустимые идентификаторы MATLAB не доступны для использования в качестве имен переменных, MATLAB использует массив ячеек векторов символов N
формы
, где {'Var1' ... 'VarN'}
N
является количеством переменных. Можно определить допустимые имена переменной MATLAB с помощью функционального isvarname
.
numOutputs
Количество выходных параметров от func
0
| положительное целое числоКоличество выходных параметров от 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
| findgroups
| groupsummary
| isvarname
| splitapply
| structfun
| varfun
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.