2013-08-15 53 views
5

Tôi có tín hiệu phụ thuộc vào thời gian.Làm thế nào để vẽ tích phân của một tín hiệu khi thời gian trôi qua?

Tôi muốn âm mưu tích hợp theo thời gian với thời gian là trục x và giá trị tích hợp là trục y.

Có cách nào Cách Python làm việc này không?

Để cụ thể hơn:

Tôi có một mảng thời gian, time, và một mảng tín hiệu, signal. Chúng có cùng kích thước.

Tôi cần tích hợp signal qua time với scipy.integrate.trapz().

Thay vì nhận được tích phân cuối cùng, tôi muốn thấy sự khác biệt tích phân như thời gian trôi qua.

Trả lời

7

Hãy thử sử dụng scipy.integrate.cumtrapz() thay vì:

plt.plot(time[:-1], scipy.integrate.cumtrapz(signal, x=time)) 
plt.show() 

Nó tính toán một mảng chứa các giá trị không thể thiếu tích lũy.

http://docs.scipy.org/doc/scipy-0.10.1/reference/generated/scipy.integrate.trapz.html

+0

Trục x là không chính xác. Xin lưu ý tôi không có khoảng thời gian cố định. Những gì tôi có là một mảng thời gian. –

+0

Ah, trong trường hợp đó, bạn có thể sử dụng mảng thời gian của mình để chỉ ra vị trí vẽ các giá trị y. Tôi đã cập nhật câu trả lời. – lmjohns3

+0

chính xác, khi bạn chạy mã, ở đây có vấn đề. Dấu x và y trong ô() có kích thước khác nhau. Kích thước của y là 2và x là 20124. Làm thế nào tôi có thể giải quyết điều đó? –

2

Một câu trả lời tốt hơn một chút sử dụng tùy chọn "initial" tranh cãi. Dưới đây là một ví dụ hoàn chỉnh:

import scipy.integrate as it 
import numpy as np 
import matplotlib.pyplot as plt 
t=np.linspace(0,1, 100) 
y=t**2 
y_int = it.cumtrapz( y , t, initial=0.0) # y_int is same size as t 
plt.plot(t, y_int) 
plt.show() 

Điều này tránh việc lập chỉ mục lạ như time[:-1]

Các vấn đề liên quan