matlab代码和python代码_返回变量Matlab和Python?

短版

MATLAB代码应该是这样写的:

function [kf, Ek]=hysime(y, n, Rn, verbose);

error(nargchk(3, 4, nargin))

if nargin < 4

verbose = true;

else

verbose = ~strcmpi(verbose ,'off');

end

如果你了解MATLAB,这应该更清楚(大部分)对应的python代码可以这样编写:

def hysime(y, n, Rn, verbose=True):

# rest of the function here

return kf, Ek

长版

此函数需要3或4个输入参数,如果未提供第四个参数,则设置默认值然而,它的实现方式比需要的复杂得多(尽管我经常看到这种模式)。理想情况下,在Matlab中,您可以指定类似的内容:

function [varargout]=hysime(y, n, Rn, verbose)

error(nargchk(3, 4, nargin))

if nargin < 4

verbose = true;

else

verbose = ~strcmpi(verbose ,'off');

end

所以它所做的是把第一个参数放在变量中

y

,变量中的第二个

n

,中的第三个

Rn

,如果指定了第四个,则将其放入

verbose

(基于它与字符串的比较方式

'off'

),否则设置

冗长的

true

.

在python中,可选参数的处理是内置的。可以通过设置

name=value

,其中

name

是参数名和

value

是默认值另外,出于历史原因,Matlab经常使用

'on'

'关闭'

而不是

真的

false

是的。这在python中几乎从来没有实现过,人们只是使用

True

False

是的。所以您可以在python中指定相同的内容,如下所示:

def hysime(y, n, Rn, verbose=True):

这使得

是的

,

n个

,和

注册护士

必需的参数,但是

冗长的

可选择。

这不适用于

冗长的

设置为字符串

'关闭'

. 正如我所说,由于历史原因,这在Matlab中很常见,但是如果可以避免的话,您真的不应该再在Matlab中这样做了,而且您绝对不应该在Python中这样做。但如果你真的真的需要处理这个案子,你可以做:

def hysime(y, n, Rn, verbose=True):

if isinstance(verbose, str):

verbose = verbose.lower() != 'off'

对于输出,Matlab代码的作用是让函数返回一个或两个值。所以有人可以这样做:

kf = hysime(y, n, Rn);

或者

[kf, Ek] = hysime(y, n, Rn);

然而,这样做的方式也比必要的复杂。如果只返回两个值,并且只使用一个返回值,则Matlab将丢弃其余的值。所以不要胡闹

varargout

,函数可以返回

[kf, Ek]

而MATLAB也会做同样的事情如果有人试图调用具有两个以上输出的函数,则会自动发生错误,因此这也是不必要的。

处理

瓦拉戈

只有当您希望程序根据输出的数量更改其行为时,才需要这样做。在这种结构中,您这样做的主要原因是

eK

计算起来很昂贵,在这种情况下,你会做这样的事情:

varargout(1) = {kf};

if nargout == 2

# calculate eK here

varargout(2) = {Ek};

end

至于

return

,只有在希望使函数在正常到达结束之前提前停止时,才需要在MATLAB中使用一旦它正常到达终点,它将

返回

自动因此,如果您指定的最后一段代码是函数的结尾,那么

返回

是多余的。

因此,您在MATLAB中显示的所有代码都可以简化为:

函数[kf,ek]=hytime(y,n,rn,verbose);

错误(nargchk(3,4,nargin))

如果nargin<4

verbose=true;

其他的

verbose=~strcmpi(verbose,'off');

结束

至于python,正如我在

other answer to you

,Python要求处理所有返回值除非您明确告诉它,否则它永远不会丢弃返回的值对你来说,最简单的解决方法就是

return kf, Ek

在函数的末尾如果有人两者都想要

kf

Ek

,他们可以:

kf, Ek = hysime(y, n, Rn)

如果他们只想

肯德基

,他们可以(在

_

是您不关心的变量的python约定):

kf, _ = hysime(y, n, Rn)

或:

kf = hysime(y, n, Rn)[0]

所以python代码是:

定义时间(y,n,rn,verbose=true):

#函数的其余部分

返回kf,Ek

如果您真的希望能够有一个或两个返回值,则需要有另一个参数来更改行为。例如:

def hysime(y, n, Rn, verbose=True, ret_eK=False):

# rest of the function here

return (kf, Ek) if ret_eK else kf

在这种情况下,如果

ret_eK

参数已指定并设置为

真的

,然后

kf, Ek

被退回,否则就

肯德基

被退回但是在Python中,除非有一些额外的计算成本,否则您真的不想这样做

埃克

,这在本例中似乎不存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值