擅长:python、mysql、java
<p>MATLAB第一次运行</p>
<pre><code> X(:,i)=X0;
</code></pre>
<p>它创建一个<em>新变量</em><code>X</code>,其<code>i</code>的第列等于<code>X0</code>。在您的代码中,发生这种情况时<code>i</code>是1,但如果<code>i</code>是>;1,MATLAB将用零初始化列1…i-1。循环完成后,代码将绘制来自矩阵<code>X</code>的数据。你知道吗</p>
<p>在Python代码中错误地将其转换为<code>X0[:,i]=X0</code>,这会产生错误,因为您试图将<code>X0</code>赋值为二维数组,而它只是一维数组。你知道吗</p>
<p>Python和numpy不会像MATLAB那样在分配给子数组时自动创建和增长数组,因此在Python中,您需要在循环之前创建数组<code>X</code>,然后在每次分配给数组的下一列之前<code>resize</code>创建数组,或者在创建数组时使用正确的大小初始化数组-因为知道它会有多大,即<code>len(t)</code>,做后者-你可以用<code>np.zeros</code>来做这个。你知道吗</p>
<p>另外,在您发布的Python代码中,行<code>X0 = X0 + A*dt*X0+dt*Finput</code>在</em>循环之外,因为前一行没有缩进-Python应该为此提出一个<code>IndentationError</code>。按照惯例,每个缩进级别应该使用四个空格。你知道吗</p>
<p>在Python代码中的循环之后,您希望绘制<code>X</code>的内容,而不是<code>X0</code>。你知道吗</p>