如何在具有任意数量变量的matlab中初始化方程?

例如 f(x) = x1.^2+.....xn.^2。该函数采用输入 n 来表示方程中有多少不同的变量。然后我需要能够使用这个方程来使用牛顿方法在某个间隔上找到局部最小值。

回答

在您示例的特定情况下,我将只使用一个数组

f = @(x) sum( x.^2 );

x1 = [1 2 3];   % f(x1) = 14
x2 = [1 2 3 4]; % f(x2) = 30

如果您想要未知数量的输入的通用内容,那么您需要varargin.

当用作函数定义中的第 n 个输入时,varargin是一个元胞数组,其中包含从n到给定数量的所有输入。因此 ifvarargin是定义中的唯一输入,它会在调用函数时存储所有输入。

f.m循环输入的详细示例(将保存在其自己的文件或脚本中的本地函数中):

function out = f( varargin )
    out = 0;
    for ii = 1:numel( varargin )
        out = out + varargin{ii}^2;
    end
end

具有更简洁语法的匿名函数版本将如下所示:

f = @(varargin) sum( [varargin{:}].^2 );

f(1, 2, 3)    % = 14
f(1, 2, 3, 4) % = 30


以上是如何在具有任意数量变量的matlab中初始化方程?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>