我是一名新手编码员(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 并不真正具有一维数组,最终您将拥有 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)的语言/库中,此操作都不相关,因为您无法转置无论如何,这样的数组。