from __future__ import division
from math import *
import cmath
import numpy as np
taup=3
eps = 0.000001;
i = 0;
del1 = 2*taup/150.;
x=[]
for tau in np.arange(-taup,taup,del1):
i = i + 1;
j = 0;
fd = np.linspace(-5/taup,5/taup,151);
val1 = 1. - abs(tau) / taup;
val2 = pi * taup * (1.0 - abs(tau) / taup) * fd;
x=np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps)))
我得到的输出x只是最后一次迭代输出,即1x151。 但我希望所有的迭代都存储在一个矩阵中(这里它将是151x151)。 我无法正确获得最后一行。
答案 0 :(得分:0)
您可以将1D数组追加到x
,然后追加vstack
:
...
x.append(np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps))))
x = np.vstack(x)
或者,预先创建结果数组可以更快:
taus = np.arange(-taup,taup,del1)
fd = np.linspace(-5/taup,5/taup,151);
x = np.empty((taus.size, fd.size))
for tau_i, tau in enumerate(taus):
# or:
# for tau_i in range(taus.size):
# tau = taus[tau_i]
i = i + 1;
j = 0;
val1 = 1. - abs(tau) / taup;
val2 = pi * taup * (1.0 - abs(tau) / taup) * fd;
x[tau_i] = np.hstack(abs( val1 * np.sin(val2+eps)/(val2+eps)))
P.S。事实上,这个代码可以在没有任何for
周期的情况下编写,只是在数组操作方面。这是你的练习。