符号向量的符号索引范围



嗨,我正在尝试索引一个符号向量的范围。

我的第一个想法是使用MatrixSymbol

A = MatrixSymbol('A',10,1)
B = Matrix(A[0:2]) # does not work!

然后我想我可以使用IndexBased,但我如何生成子矩阵B(我不能索引范围(

A=IndexedBased('A')
B=Matrix([A[0],A[1]]) # works but I want to define a range

必须有适当的方法来做到这一点。

IndexedBase将为您提供一个类似于一维矢量的符号。

你可以使用列表理解,range给出索引:

>>> a = IndexedBase("A")
>>> Matrix([a[i] for i in range(2)])
Matrix([
[A[0]],
[A[1]]])

由于您使用Python,如果您想在IndexedBase:上使用直接切片,您可以自由修改例程以满足您的需求

def gi(self, slc):
if isinstance(slc, slice):
a,b,s=slc.start, slc.stop, slc.step
s = s or 1
a = a or 0
assert all(type(i) is int or i is None for i in (a,b,s))
assert b is not None
rv = []
for i in range(a,b,s):
rv.append(self[i])
return rv
return _gi(self, slc)
_gi = IndexedBase.__getitem__
IndexedBase.__getitem__ = gi

有了这个修改,你现在可以做:

>>> x = IndexedBase('x')
>>> x[0]
x[0]
>>> x[:2]
[x[0], x[1]]

(这并不试图处理关键词的争论;它更多的是概念的证明。(

相关内容

  • 没有找到相关文章

最新更新