我正在尋找類似於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很棒的鏈接。感謝 –