在MATLAB中以动态方式将多个输入传递给函数

时间:2018-01-07 21:52:47

标签: matlab

感谢您抽出时间阅读和帮助。

我创建了符号数组:

nvar =3 % no of variables
xk = sym('x',1,nvar)  % this creates three symbols in xk = x1 , x2 , x3
% And an initial value matrix as<br/>
x0 = [2 -2 1]

现在我需要声明一个可以是x1^2 + x1*x2 + x3^2

的函数

所以毫无疑问,我可以宣布它为

f(xk(1),xk(2),xk(3)) = x1^2 + x1*x2 + x3^2

但我希望以迭代/动态的方式在初始点获得它的值 像:

f(x0(i),x0(i+1),x0(i+2), . . . . . . x0(n) )

我试过f(xk)

f(xk(1:nvar))       % get error like function requires 3 inputs etc etc

1 个答案:

答案 0 :(得分:0)

您可以使用三个单独的输入定义一个函数:

{this.state.value.map((v, i) => {
      return <div key={i}>
            <h1>{v.jumlah}</h1>
            <h1>{v.nama_barang}</h1>
            <h1>{v.harga}</h1>

      </div>

    })}

或单个输入,它是一个包含3个值的数组:

function out = myfunc1(x1, x2, x3)
    out = x1^2 + x1.*x2 + x3^2;
end

如果您设置function out = myfunc2(x) out = x(1)^2 + x(1).*x(2) + x(3)^2; end ,则可以致电:

x0 = [2, -2, 1]

然而,目前还不清楚你对“动态”电话的要求。您可以通过在行中排列输入并更改函数以对输入列进行操作来传递几组3个输入:例如。

f = myfunc2(x0)

然后两行输入:function out = myfunc3(x) out = x(1,:)^2 + x(1,:).*x(2,:) + x(3,:)^2; end 将提供两个输出:

x0 = [2, -2, 1; -3, 3, 1]