我在MATLAB中有这段代码:
scaling = 1;
rho = scaling * (0:1 / (int_len / 2):1);
rho = [rho'; rho(end - 1:-1:2)'];
实际上我必须把它翻译成Python。我不知道MATLAB,我无法弄清楚这段代码在做什么。在这种情况下,int_len的值对我来说并不重要,它是前两个值的乘法。
根据我的理解,在第二行中,rho将是0和1之间的数组,步长为1 /(int_len / 2)。 (假设步骤的结果是0.2,我会[0, 0.2, 0.4, 0.6, 0.8, 1]
)
但是第三行,我有点困惑。是否在rho中添加了一行来创建2D矩阵?我必须把它翻译成Python,我实际上还在学习Python和Numpy。所以如果我真的添加一个新行,它只是使用numpy.vstack()还是有另一种方法可以做到这一点?
答案 0 :(得分:2)
您对第二行的解释是正确的。在第三行中,1-by-N行向量rho
首先使用'
转换(注意:这应该是.'
)以创建N-by-1列向量。这是vertically concatenated(使用[...; ...]
)与indexing rho
创建的另一个列向量相反,从end到第二个元素的反向移位并转置它与'
。
简而言之,它会创建一个列向量,其值为rho
,后跟反转值(不计算结束点)。对于您的示例数据,rho
最终会像这样:
rho = [0; 0.2; 0.4; 0.6; 0.8; 1; 0.8; 0.6; 0.4; 0.2]