如何在双symsum中使用矩阵条目?

时间:2017-04-30 13:17:35

标签: matlab

我试图在函数中实现以下双重求和:

f(x,y)=\sum_{k=0}^{S}\sum_{l=0}^{S}{a_{kl}x^ky^l}

这是我的第一次尝试:

function [ a ] = MyFun( S )
a=randi([0 9],S+1);
syms x y k l;
f(x,y)=symsum(symsum(a(k,l)*x^k*y^l,l,1,S+1),k,1,S+1);
f(1,2)
end

实际上,我的代码稍后会在循环中评估f,但这似乎与此无关。尝试MyFun(3)之类的内容会导致错误:

  

使用sym / subsindex时出错(第766行)索引或函数无效   定义。定义函数时,请确保参数为   符号变量和函数体是SYM表达式。   索引时,输入必须是数字,逻辑或“:”。

     

MyFun出错(第4行)   F(X,Y)= symsum(symsum(一个(K,L)* X ^(K-1)* Y ^(L-1)中,l,1,S + 1)中,k,1,S + 1 );

如果a(k,l)*从内部symsum中删除,那么一切正常,所以我怀疑索引有问题。是否无法使用符号变量kl作为索引?如果没有,我该如何解决?

1 个答案:

答案 0 :(得分:0)

使用符号值索引矩阵似乎不起作用。作为替代方案,您可以使用元素乘法,如下所示:

function f = MyFun( S )
    a=randi([0 9],S+1);
    k = repmat((0:S)', 1, S+1);
    l = repmat((0:S), S+1, 1);
    syms x y;
    f(x, y) = sum(sum(a .* x.^k .* y.^l));
end