如何正确更改此部件[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