gpt4 book ai didi

matlab - 破译 http ://stackoverflow. com/a/13135833/560821 中找到的函数句柄解决方案

转载 作者:行者123 更新时间:2023-12-04 05:17:58 27 4
gpt4 key购买 nike

所以......我可以理解matlab函数句柄及其目的。但有时,当它变得过于神秘时,我需要帮助来进一步阐述它。
从默认 MATLAB documentation 中获取此示例,说:

f = @(x)x.^3-2*x-5;

我也可以将其重写为:
function f(arg)
arg.^3 - 2*arg - 5;
end

任何人都可以帮助破译下面的代码,如前所述 here ?我不需要默认 matlab 函数的帮助。在这里对理解用户定义的匿名函数有一点帮助..
applyToGivenRow = @(func, matrix) @(row) func(matrix(row, :))
applyToRows = @(func, matrix) arrayfun(applyToGivenRow(func, matrix), 1:size(matrix,1))'
% Example
myMx = [1 2 3; 4 5 6; 7 8 9];
myFunc = @sum;
applyToRows(myFunc, myMx)

最佳答案

applyToGivenRow = @(func, matrix) @(row) func(matrix(row, :))

这是一个创建另一个函数的函数,例如以下(取自问题示例)
applyToGivenRow(@myFunc,myMx)

将评估函数
@(row) myFunc(myMx(row,:))

然后
applyToRows = @(func, matrix) arrayfun(applyToGivenRow(func, matrix), 1:size(matrix,1))'

使用这个 applyToGivenRow功能。 Arrayfun 循环遍历您提供给它的向量 ( 1:size(matrix,1) ) 并针对向量中的每个值评估您提供给它的函数 ( applyToGivenRow(func, matrix) )。

原作者也可以将其缩短为
applyToRows = @(func, matrix) arrayfun(@(row) func(matrix(row, :), 1:size(matrix,1))'

阅读有关 anonymous functions 的文档和 arrayfun ,这应该很容易理解。

关于matlab - 破译 http ://stackoverflow. com/a/13135833/560821 中找到的函数句柄解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989379/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com