在matlab中输入延迟,你能在Matlab中执行延迟集(:= Mathematica)吗?

Lazy evaluation主要用于函数式编程语言,MATLAB是基于过程/ OOP的.因此,不存在等效的SetDelayed.如果您尝试使用已经证明的匿名函数,它将无法正常工作,正如Amro已经指出的那样.

但是,如果您可以访问符号计算工具箱,那么您可以使用可以被视为等效的东西:=(如果您问我,则是一个脆弱的等价物).这是一个例子:

syms x y z; %#Declare x, y and z as symbolic variables

x=y+2; %#Define some value for x

f=@(x)x.^2; %#Define an anonymous function.

f(x)

ans =

(y + 2)^2

%#Check with z

f(z)

ans =

z^2

您可以看到它使用f的实际定义,并且不像在数值示例中那样捕获x的定义.您还可以将x的定义更改为x = 1 / y,f(x)现在将使用x的当前定义.请注意,f只是一个函数句柄,将采用数字/符号参数.例如.,

f(1:5)

ans =

1 4 9 16 25

它不相似的部分:=是它仅对表达式中出现的术语应用定义而不会更深入(即,它不会评估可能由于以下原因而产生的不同变量集的定义第一次评估).这并不奇怪,因为MATLAB不是基于规则的语言.为了说明我的观点:

y=z^3; %#Define y

f(x)

ans =

(y + 2)^2 %#The definition for y is not used.

而Mathematica会给你(z ^ 3 2)^ 2.

Clear[y, z, x, f]

f[x_] := x^2;

y := z^3; x := y + 2;

f[x]

Out[1]= (2 + z^3)^2

最好是你接受了两种语言的差异,并试图坚持每种语言中的惯用语.试图否认它并像另一个一样编程可能会让你的生活变得悲惨(例如,从C背景开始并坚定地在Mathematica中编写For循环).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值