Matlab Mupad将布尔值转换为整数

Matlab Mupad将布尔值转换为整数,matlab,mupad,Matlab,Mupad,我给出了一个简单的例子,说明我想在Matlabs MuPad中做什么 S := matrix([[0,S_1,S_2]]); sum(S[k]*(k < 2)* S[k] * (TRUE), k=1..3) S:=矩阵([[0,S_1,S_2]]); 和(S[k]*(k\alpha B_l)]的公式,我试图用一个CAS来扩展和,而不是手工对各种\alpha和各种l,k,A_k,B_l进行扩展。如果该语句为真,则不等式应为1,否则为0。当然,对于给定的一组参数,该做什么是显而易见的,然而,

我给出了一个简单的例子,说明我想在Matlabs MuPad中做什么

S := matrix([[0,S_1,S_2]]);
sum(S[k]*(k < 2)* S[k] * (TRUE), k=1..3)
S:=矩阵([[0,S_1,S_2]]);
和(S[k]*(k<2)*S[k]*(真),k=1..3)
应该是:“S_1^2+S_2” 但是我得到:
错误:第一个参数必须是'type::arithmetrical'类型。[总和]

我理解错误,我只是不知道如何成功。 谢谢你的建议。我在寻找某种指示函数

S := matrix([[0,S_1,S_2]]);

sum(S[k]^(4-k), k=1..3)
我很确定你想做什么。

问题:

从内部术语开始。为了获得有效的数字0或1,我使用了以下表达式:

piecewise([A[k]>a*B[l],1],[Otherwise,0])
剩下的是直截了当的:

sum(sum(A[k]*B[l]*piecewise([A[k]>a*B[l],1],[Otherwise,0]), l=1..L), k=1..K)

我有一些形式为\sum{k=0}^k\sum{l=0}^l[A_k*B_l*(A_k>\alpha B_l)]的公式,我试图用一个CAS来扩展和,而不是手工对各种\alpha和各种l,k,A_k,B_l进行扩展。如果该语句为真,则不等式应为1,否则为0。当然,对于给定的一组参数,该做什么是显而易见的,然而,正因为如此,机器才能做到这一点。这就是背后的动机。也许你可以帮我找到另一种方法。
*(A_k>\alpha B_l)
部分严格来说是无效的,因为布尔表达式是与数字相乘的。但很明显,我会写一个新的答案。它看起来有点笨重,但实际上是有效的。有没有办法通过定义一个过程来缩短输入?我试过了,但它缺乏下一句所描述的能力。如果逻辑表达式不能计算为true或false,您的解决方案甚至可以区分所有可能的情况。