理解将数组切片为变量

问题描述 投票:0回答:1

我是一名新手编码员(Python),我已经获得了 matlab 中的代码(我有 0 matlab 经验)。我已经能够翻译大部分代码,但我陷入了某个点。代码的大致目标是对数据进行傅立叶变换,然后检查结果是否满足某些规则。

我提供了一些导致我感到困惑的行的代码

#傅里叶变换(我理解这些步骤)

num_rows = length(csvfilename);
Y = fft(csvfilename);
P1 = abs(Y).^2/num_rows;

#我不明白下一行代码

P1_vec(1,:) = P1;

P1 在线的右侧意味着什么? (1,:) 在 Matlab 中意味着什么?

谢谢! :)

我尝试查看matlab指导文档,以及从matlab到python的翻译,但我没有找到任何东西。

matlab fft
1个回答
0
投票

MATLAB 并不真正具有一维数组,最终您将拥有 1xN 或 Nx1 矩阵。

>> size([1,2,3])
ans =
     1     3

意味着您实际上已经有了在 MATLAB 中转置“1D”数组的概念。 大多数切片和向量运算在涉及这些向量的转置时都故意模糊,只要有意义,Matlab 就会很乐意忽略奇异维度。

m = zeros(2,3);
m(1,:) = [1,2,3];   % assigns the first row of m to be the row vector [1,2,3]
m(2,:) = [4,5,6]';  % assigns the second row of m to be the column vector [4;5;6]
>> m
m =
     1     2     3
     4     5     6

正如我们所见,MATLAB 忽略了 RHS 在这里是如何形成的。

那么为什么有人会选择建造

P_vec(1,:) = some_vector;

它确保无论

some_vector
是 1 × N 还是 N × 1 矩阵,P_vec 始终是 1 × N(我们通常称为行向量)

我称此 matlab 草率代码(不费心跟踪转置),并且在任何支持实际一维数组(如 numpy)的语言/库中,此操作都不相关,因为您无法转置无论如何,这样的数组。

© www.soinside.com 2019 - 2024. All rights reserved.