我正在寻找类似于matlab中的列表推导,但是我无法在纪录片中找到像这样的东西。matlab有没有像列表理解,因为它是在Python?
在Python中它会是这样的
A=[i/50 for i in range(50)]
我正在寻找类似于matlab中的列表推导,但是我无法在纪录片中找到像这样的东西。matlab有没有像列表理解,因为它是在Python?
在Python中它会是这样的
A=[i/50 for i in range(50)]
没有,MATLAB没有列表内涵。你真的不需要它,因为重点应该放在阵列级的计算:
A = (1:50)/50
Matlab的可直接与阵列工作,使列表理解的有用
如果你想要做的是为样本微不足道,你可以简单地做一个标量鸿沟:
A = (0:50) ./ 50
有几种方法可以在Matlab中生成一个列表,从0到49/50 1/50
A = (0:49)/50
B = 0:1/50:49/50
C = linspace(0,49/50,50)
编辑萨姆·罗伯茨在发言:在评论中指出,即使所有这些名单应该是等价的,计算结果是由于浮点错误是不同的。例如:
max(abs(A-B))
ans =
1.1102e-16
A的这些值都不相同!尝试将它们称为A,B和C并将它们与所有(A == B)进行比较。在冒号,双冒号和linspace的不同行为中进行有趣的练习。我对Python一无所知,但如果这个线程中的某个人能够将这三个MATLAB选项与Python列表理解进行比较,那么它可能会很有用。编辑:删除我的-1,我不是故意听起来很关键,这是一个很好的答案。 –
@SamRoberts:这是一个很好的观点。即使在理论上,所有的解决方案都应该是等价的,但由于浮点错误,其结果并不完全相同。 – Jonas
为了让人们理解我以前的评论 - @Jonas最初称他所有的变量A,B和C只是A.在编辑之后,他的答案现在更清晰了,但是我的评论没有多少意义...... –
您可能会觉得http://www.scipy.org/NumPy_for_Matlab_Users有用。请注意,在Numpy中,我可能会使用'A = np.arange(50)/ 50.0'来代替速度的列表理解。 – mtrw
@mtrw很棒的链接。感谢 –