首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想把下面的MATLAB代码转换成python?这样做对吗?

我想把下面的MATLAB代码转换成python?这样做对吗?
EN

Stack Overflow用户
提问于 2022-09-18 11:33:47
回答 2查看 62关注 0票数 2

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

代码语言:javascript
复制
%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
代码语言:javascript
复制
#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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-18 14:24:28

这个MATLAB:

代码语言:javascript
复制
[~,j_index] = min(InterpFact-AIF_vect);

将被翻译成Python,如:

代码语言:javascript
复制
j_index = np.argmin(InterpFact-AIF_vect)

而且,只有当…/(fd_max)是标量时,才能像您那样翻译fd_max。在MATLAB中用矩阵除法求解线性方程组。

我强烈建议您使用相同的输入并行运行这两段代码,以验证它们是否执行相同的操作。你不能凭猜测来猜测一段代码是干什么的。

票数 1
EN

Stack Overflow用户

发布于 2022-09-18 11:57:46

试试这个,看看它是否提供了它应该提供的东西(我在这里不确定,因为我不太懂matlab):

代码语言:javascript
复制
#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)    

给予:

代码语言:javascript
复制
0
6.0 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73762417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档