2014-01-17 52 views
1

我正在研究一個matlab轉換代碼。 什麼等效於。*在matlab與python?matlab相當於python中的點星形

len = sum(sqrt(sum(v.*v)))/N; 

其中v是numpy的數組:

v = [array([-35289.38919481, -30575.56015338, -21456.41798462, ..., 
    19796.17331542, 11216.34277023, 6977.87432284])] 
N = 18225 

在這種情況下,我將如何轉換代碼到Python?

+1

對Matlab的這個預期結果是什麼? 'sum(...)'應該返回一個數字,那麼爲什麼你在'sqrt'周圍還有一個外部'sum'呢? – senshin

回答

3

對於numpy的陣列,只是用*會做逐元素相乘在Matlab的.* http://wiki.scipy.org/NumPy_for_Matlab_Users

可以使用,

len = numpy.sum(numpy.sqrt(numpy.sum(v[0] * v[0], axis=0)))/N 

注意:如果要改爲使用數組的矩陣在numpy中,你必須使用multiply方法。

+1

但v在數組中,所以我們應該使用v [0]? – sam

+1

@sam謝謝指出。我修好了它.. :) – bgamlath

1
v_squared_sum = v.dot(v.transpose()) 
len_ = np.sum(np.sqrt(v_squared_sum))/N 
1
import numpy as np 

v = np.array([1,2,3]) 
N = 3 
len_ = np.sqrt(np.dot(v, v))/N 
print(len_) 

結果:

1.24721912892 

不要使用len作爲變量名,因爲這個陰影內置長度功能len()