matlab有没有像python一样的列表理解?

时间:2011-11-30 13:53:33

标签: arrays matlab

我在matlab中寻找像列表推导这样的东西但是我在纪录片中找不到这样的东西。

在python中它会像

A=[i/50 for i in range(50)]

6 个答案:

答案 0 :(得分:10)

Matlab非常喜欢“矢量化”。你可以把你的例子写成:

A = (0:49) ./ 50

Matlab讨厌循环,因此列出理解。也就是说,看一下arrayfun函数。

答案 1 :(得分:5)

你可以这样做:

(1:50)/50

或者对于更一般的事情,您可以这样做:

f=@(x) (x/50);
arrayfun(f,1:50)

答案 2 :(得分:2)

不,Matlab没有列表推导。你真的不需要它,因为焦点应该放在数组级计算上:

A = (1:50) / 50

答案 3 :(得分:0)

如果您尝试做的事情与样本一样微不足道,那么您可以简单地进行标量划分:

A = (0:50) ./ 50

答案 4 :(得分:0)

有几种方法可以在Matlab中生成一个从0到49/50的列表,增量为1/50

A = (0:49)/50

B = 0:1/50:49/50

C = linspace(0,49/50,50)

编辑正如Sam Roberts在评论中指出的那样,即使所有这些列表都应该是等效的,但由于浮点错误,数值结果也不同。例如:

max(abs(A-B))
ans =
   1.1102e-16

答案 5 :(得分:-1)

Matlab可以直接使用数组,使列表理解不那么有用