我想把下面的MATLAB代码转换成python?这是正确的方法吗



如何正确更改此部件[AIF,j]=get_AIF_j(InterpFact)[~,j_index] = min(InterpFact-AIF_vect)?剩下的代码呢?提前谢谢。

%Matlab code
InterpFact = (fs_h/2/2)/(fd_max); 
[AIF,j]=get_AIF_j(InterpFact);    

function [AIF,j] = get_AIF_j (InterpFact)
j_vect = 1:10;
AIF_vect = floor(j_vect*InterpFact)./j_vect;
[~,j_index] = min(InterpFact-AIF_vect);
j = j_vect(j_index);
AIF = AIF_vect(j_index);
end
#Python code
InterpFact = (fs_h/2/2)/(fd_max) 
[AIF,j]=get_AIF_j(InterpFact)

def get_AIF_j (InterpFact):
j_vect =np.arange(1,11)
AIF_vect = np.floor(j_vect*InterpFact)/j_vect
[~,j_index] = min(InterpFact-AIF_vect)
j = j_vect[j_index]
AIF = AIF_vect[j_index];
return AIF,j

此MATLAB:

[~,j_index] = min(InterpFact-AIF_vect);

将被翻译为Python:

j_index = np.argmin(InterpFact-AIF_vect)

此外,如果fd_max是标量,则…/(fd_max)只能按照您的方式进行转换。在MATLAB中用矩阵除法求解线性方程组。

我强烈建议您使用相同的输入并行运行这两段代码,以验证它们是否做了相同的事情。你不能猜测一段代码的作用。

试试这个,看看它是否能提供它应该提供的东西(我在这里不确定,因为我不精通matlab(:

#Python code
import numpy as np
def get_AIF_j (InterpFact):
j_vect   = np.arange(1,11)
AIF_vect = np.floor(j_vect*InterpFact)/j_vect
j_index = int( min(InterpFact-AIF_vect) )
print(j_index)
j = j_vect[j_index]
AIF = AIF_vect[j_index];
return AIF, j
fs_h = 24; fd_max = 1
InterpFact = (fs_h/2/2)/(fd_max) 
AIF, j = get_AIF_j(InterpFact)
print(AIF,j)    

给出:

0
6.0 1

相关内容

  • 没有找到相关文章

最新更新