我在Matlab下面的代碼,我不熟悉:如何將矩陣從Matlab轉換爲Python?
function segments = segmentEnergy(data, th)
mag = sqrt(sum(data(:, 1:3) .^ 2, 2));
mag = mag - mean(mag);
above = find(mag>=th*std(mag));
indicator = zeros(size(mag));
indicator(above) = 1;
plot(mag); hold on; plot(indicator*1000, 'r')
end
我寫在Python這下面的函數:
def segment_energy(data, th):
mag = np.linalg.norm((data['x'], data['y'], data['z']))
print "This is the mag: " + str(mag)
mag -= np.mean(mag)
above = np.where(mag >= th * np.std(mag))
indicator = np.zeros(mag.shape)
indicator[above] = 1
plt.plot(mag)
plt.plot(indicator * 1000, 'r')
plt.show()
我得到一個錯誤:
line 23, in segment_energy
indicator[above] = 1
IndexError: too many indices for array
data
是從包含三軸加速度計數據的CSV文件讀取的一個熊貓DataFrame
。加速度計數據的軸是x
,y
和z
。數據幀的列爲timestamp
,time skipped
,x
,y
,z
和label
。
錯誤是因爲Python代碼中的mag
是一個標量,我把它當作一個矩陣對待它。但是,我不確定他們是如何將mag
轉換爲MATLAB函數中的矩陣。
什麼是數據? –
'data'是來自CSV文件的數據幀。 – dirtysocks45
然後嘗試使用'mag = np.linalg.norm(data.iloc [:,1:3] .values())' –