我有一个函数F ,它将向量a作为输入。函数的输出和a都是长度为N的向量,其中 N 是任意的。每个分量F n的形式为g(a(n),a(nk)),其中g对于每个分量都是相同的。
我想在 matlab 中使用它的符号功能实现这个函数并计算它的雅可比(然后使用 .m 将函数和它的雅可比存储为常规的 .m 文件matlabFunction
)。我知道如何为每个输入都是可以手动处理的标量的函数执行此操作。但是在这里,我想要一个能够为任何 N 生成这些文件的脚本。有没有很好的方法来做到这一点?
我想出的一个解决方案是生成一个字符串数组 "a0","a1", ..., "aN" 并使用eval
. 但这很混乱,我想知道是否有更好的方法。
谢谢!
[编辑]
这是我当前解决方案的最小工作示例:
function F = F_symbolically(N)
%generate symbols
for n = 1:N
syms(['a',num2str(n)]);
end
%define output
F(1) = a1;
for n = 2:N
F(n) = eval(sprintf('a%i + a%i',n,n-1));
end