我有一个函数lnn1c(ii, j, n, n1)
,它将索引ii
和jj
作为参数,其中Kdk1
和Wdg
是某些数组,wg(n)
是另一个函数有点alpha*(n-3)
而Gdg
是一个符号变量。
function lnn1c=lnn1c(ii, j, n, n1)
syms k1Vzdg
global Gdg Wdg Kdk1
lnn1c=Gdg-i*(-(Wdg(ii)-Wdg(j))+(wg(n)-wg(n1))+...
(Kdk1(ii)-Kdk1(j))*k1Vzdg);
end
我想在我的脚本中对表达式lnn1c(ii, j, n, n1)
求和ii
和j
从1到4。
我试过这样的代码
syms ii jj n n1
sum(subs(sum(subs(lnn1c(ii, jj, n, n1), ii, 1:4)),jj, 1:4))
但我一直收到这样的错误
索引输入必须是数字,逻辑或“:”。
任何帮助对我来说都很有价值。
答案 0 :(得分:1)
不,符号索引没有意义。
但是,你可能会混淆想法。你实际上在做Consumer
。你放subs(f(ii, jj, n, n1), ii, 1:4)
然后用1:4替换它。为什么不把ii
作为输入?
只是做:
1:4
您肯定需要for jj=1:4
s=s+sum(lnn1c(1:4, jj, n, n1));
end
和n
的数值....
由于你还没有显示整个代码,很难知道你在做什么,但有一些提示可以说你根本不需要符号数学,而只是混合了编程概念。
答案 1 :(得分:0)
正如Ander所指出的那样,你可以用两个for循环来完成它,你就没有问题了:
s=0;
for jj=1:4
for ii=1:4
s=s+sum(lnn1c(ii, jj, n, n1));
end
end
但是,如果您的意图是在1行中进行,为什么不尝试使用arrayfun?
s=sum(arrayfun(@(ii) sum(arrayfun(@(jj) lnn1c(ii, jj, n, n1),1:4),1:4));
不需要syms;)