从Matlab进行翻译:无法广播输入数组

问题描述 投票:-2回答:1

我对python来说还比较陌生,想知道为什么这段代码无法正常工作。我为使用图片而道歉,但是由于互联网问题,我无法复制和粘贴代码。

为简要说明,我尝试实现一种光谱方法,其中A是我的微分矩阵,q是我的解矩阵(nx,nt),并通过考虑每一列来进行时间步长。

p

python arrays matlab numpy
1个回答
0
投票

错误:

q [:,t + 1] =倒置forgold np.array(q [:,t])+倒置dt np.array(nl)

q[:, t+1]索引2d数组(可能不是np.matrix,它更像是MATLAB)。此索引将尺寸数减少1,因此错误消息中的形状为(220)。

错误消息显示RHS为(220,220)。该形状可能来自invertedforgoldnp.array(q[:,t])为1d。将(220,220)乘以(220,)是可以的,但是您不能将该正方形数组放入一维插槽中。

错误行中np.array的两种用法都是多余的。他们的论据已经是ndarray

关于循环,可能有必要。看起来q[:,t+1]是q [:,t], a serial, rather than parallel operation. Those are harder to render as 'vectorized' (unless you can usecumsum之类的函数)。

请注意,在numpy中,*是元素乘法,即MATLAB的.*np.dot@用于矩阵乘法。

q[:,t+1]= invert@q[:,t]

会工作

© www.soinside.com 2019 - 2024. All rights reserved.