我有一个函数 F ,它将一个向量 a 作为输入。函数的输出和 a 都是长度为 N 的向量,其中N是任意的。每个组件 F n 的格式为 g(a(n),a(nk)),其中 g 每个组件都相同。
我想在matlab中使用其符号功能实现此功能并计算其雅可比行列式(然后使用matlabFunction
将函数及其jacobian存储为常规.m文件)。我知道如何为一个函数执行此操作,其中每个输入都是可以手动处理的标量。但是在这里我想要一个能够为任何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
答案 0 :(得分:2)
试试这个:
function F = F_symbolically(N)
a = sym('a',[1 N]);
F = a(1);
for i=2:N
F(i) = a(i) + a(i-1);
end
end
注意使用sym
函数(不是syms
)来创建符号变量数组。