我正在尝试将这段MATLAB代码翻译成Python。代码如下:
function snr_est = estimate_snr(R,r_m,x)
[L N]=size(R); % L number of bands (channels)
% N number of pixels (Lines x Columns)
[p N]=size(x); % p number of endmembers (reduced dimension)
P_y = sum(R(:).^2)/N;
P_x = sum(x(:).^2)/N + r_m'*r_m;
snr_est = 10*log10( (P_x - p/L*P_y)/(P_y- P_x) );
return;
我的问题与大小方法有关。对于MATLAB代码中大小的用法,MATLAB说“当A
是一个矩阵时,它返回行数和列数”。我想用Python做同样的事情。我知道a.shape
也返回数组的维数。那么,这些函数是否可以像MATLAB代码在此函数中要求的那样访问它们?
发布于 2018-07-18 04:24:23
MATLAB的size
函数和numpy的shape
属性都以相同的方式输出尺寸。
例如,如果A
是MATLAB中名为3行4列深度为5的3D矩阵,则size(A)
将返回[3, 4, 5]
。
类似地,在python中,如果我有一个具有相同维数的3Dnumpy数组B
,B.shape
将返回(3, 4, 5)
。
在上面提供的示例中,R
是一个维度为L x N
的矩阵,x
是一个大小为p x N
的矩阵。假设传递给python函数的矩阵(二维numpy数组)是相同的(即R.shape=(L,N)
和x.shape=(p,N)
,MATLAB的size
和numpy的shape
的行为也是相同的。
https://stackoverflow.com/questions/51388178
复制相似问题