0

我有一个函数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
4

1 回答 1

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

请注意使用symfunction (not syms) 创建符号变量数组。

于 2016-03-19T12:27:51.920 回答