MATLAB使用括号,分号和单引号与矩阵

时间:2017-07-20 18:28:04

标签: python matlab numpy matrix

我在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()还是有另一种方法可以做到这一点?

1 个答案:

答案 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]