矢量化具有多个变量的函数



考虑任意函数:

function myFunc_ = myFunc(firstInput, secondInput)
myFunc_ = firstInput * secondInput;
end

现在想象一下,我想将上面的函数映射到第一个输入firstInput的数组,而第二个输入secondInput是常量。例如,类似这样的内容:

firstVariable = linspace(0., 1.);
plot(firstVariable, map(myFunc, [firstVariable , 0.1]))

其中0.1secondInput的任意标量值,firstVariable数组是firstInput的任意数组。

我已经研究了arrayfun()功能。但是,我不知道如何包含常量变量。另外,MATLAB 和 Octave 之间的语法似乎不同,或者我弄错了。对我来说,拥有一个可以与同事共享的交叉兼容代码很重要。

假设在原始函数中,您正在乘以两个标量并且想要矢量化,那么

function myFunc_ = myFunc(firstInput, secondInput)
myFunc_ = firstInput .* secondInput;
end

应该工作得很好。

然后直接绘制:

plot( firstVariable, myFunc(firstVariable , 0.1) )

恐怕原始问题中给出的任意示例过于简化,因此,它们并不代表我在代码中面临的实际问题。但我确实设法找到了在 Octave 中工作的正确语法:

plot(firstVariable, arrayfun(@(tempVariable) myFunc(tempVariable, 0.1), firstVariable))

基本上

@(tempVariable) myFunc(tempVariable, 0.1)

创建所谓的匿名函数和

arrayfun(<function>, <array>)

将函数映射到给定数组上。

相关内容

  • 没有找到相关文章

最新更新