使用 MATLAB 符号工具箱评估带有向量的向量函数
Evalulating a vector function with a vector with MATLAB's symbolic toolbox
我有一个函数 F,它是 n 个变量的函数向量。例如,考虑以下内容:
syms x y z f(f1,f2,f3) f1(x,y,z) f2(x,y,z) f3(x,y,z)
X0 = [1 0 1 0]';
f1(x,y,z) = x+y+2;
f2(x,y,z) = w-5*x+z^2-4;
f3(x,y,z) = 2*x+y^2-z-12;
F = vertcat(f1, f2, f3)
这里,F是三个变量的三个函数的向量。在我考虑的情况下,我希望 F 被视为 n 个变量中的 n 个方程。
我想获取长度为 F 的标量向量,如下所示:
X = [1 2 3]';
并在此向量处计算 F。所以像:
F(X(1),X(2),X(3))
但是,我需要一种在不知道 n 的情况下编写它的方法。我可以通过写
找到 n
dims = size(X);
但这并没有解决我如何在 X 处对 F 进行参数化评估的问题。有没有办法做到这一点?
如果您不介意使用单元格而不是数组,可以将 X = [1 2 3]'
替换为 X = {1 2 3}
(不需要转置)并将 F(x(1),x(2),x(3))
替换为 F(X{:})
.
我有一个函数 F,它是 n 个变量的函数向量。例如,考虑以下内容:
syms x y z f(f1,f2,f3) f1(x,y,z) f2(x,y,z) f3(x,y,z)
X0 = [1 0 1 0]';
f1(x,y,z) = x+y+2;
f2(x,y,z) = w-5*x+z^2-4;
f3(x,y,z) = 2*x+y^2-z-12;
F = vertcat(f1, f2, f3)
这里,F是三个变量的三个函数的向量。在我考虑的情况下,我希望 F 被视为 n 个变量中的 n 个方程。
我想获取长度为 F 的标量向量,如下所示:
X = [1 2 3]';
并在此向量处计算 F。所以像:
F(X(1),X(2),X(3))
但是,我需要一种在不知道 n 的情况下编写它的方法。我可以通过写
找到 ndims = size(X);
但这并没有解决我如何在 X 处对 F 进行参数化评估的问题。有没有办法做到这一点?
如果您不介意使用单元格而不是数组,可以将 X = [1 2 3]'
替换为 X = {1 2 3}
(不需要转置)并将 F(x(1),x(2),x(3))
替换为 F(X{:})
.