MATLAB转Python:如何改写gamma_real截断代码?
MATLAB转Python:处理
end索引问题 先明确你MATLAB第二行代码的作用:
gamma_real=gamma_real(1:(end-(T_cqi-1)));
它是保留数组前总长度 - (T_cqi-1)个元素,也就是去掉最后T_cqi-1个元素。
在Python的numpy中,没有直接的end关键字,但可以用负索引切片实现等价逻辑。你第一行转完的gamma_real是形状为(1, CQI_test.size*T_cqi)的二维数组,对应的Python代码可以写成:
# 直接用负索引,去掉最后T_cqi-1个元素 gamma_real = gamma_real[:, :-(T_cqi-1)] # 也可以通过获取数组长度来明确实现,效果完全一致: # total_len = gamma_real.shape[1] # gamma_real = gamma_real[:, :total_len - (T_cqi-1)]
解释
- 切片语法
:-n表示取到倒数第n个元素之前的所有内容,对应MATLAB里的1:(end-n) - 因为你的数组是二维结构,用
[:, :-(T_cqi-1)]对第二维(列)做切片,能保持第一维的结构不变。
内容的提问来源于stack exchange,提问作者Mario





