Theo ghi nhận của Tcaswell, chức năng phù hợp để sử dụng là step. Dưới đây là một ví dụ xấp xỉ cốt truyện đã cho của bạn:
import matplotlib.pyplot as plt import numpy as np def my_lines(ax, pos, *args, **kwargs): if ax == 'x': for p in pos: plt.axvline(p, *args, **kwargs) else: for p in pos: plt.axhline(p, *args, **kwargs) bits = [0,1,0,1,0,0,1,1,1,0,0,1,0] data = np.repeat(bits, 2) clock = 1 - np.arange(len(data)) % 2 manchester = 1 - np.logical_xor(clock, data) t = 0.5 * np.arange(len(data)) plt.hold(True) my_lines('x', range(13), color='.5', linewidth=2) my_lines('y', [0.5, 2, 4], color='.5', linewidth=2) plt.step(t, clock + 4, 'r', linewidth = 2, where='post') plt.step(t, data + 2, 'r', linewidth = 2, where='post') plt.step(t, manchester, 'r', linewidth = 2, where='post') plt.ylim([-1,6]) for tbit, bit in enumerate(bits): plt.text(tbit + 0.5, 1.5, str(bit)) plt.gca().axis('off') plt.show()Tính toán một loạt các mẫu của hàm sin từ 50 Hz (ví dụ 300 trở lên). Vẽ những mẫu này như các dấu chấm vào
Một biểu đồ và vẽ đồ hình sin là tốt. Thay đổi số lượng mẫu thành số thấp hơn. Bạn có thể suy luận gì từ kết quả?
Khi sử dụng máy tính, chúng tôi bắt đầu biểu diễn tín hiệu với luồng số riêng biệt và có thể đếm được: chúng tôi gọi các mẫu tín hiệu này. Tại mỗi trường hợp, giá trị tín hiệu được lưu trữ trong bộ nhớ. Tất cả giá trị tín hiệu giữa thời gian mẫu chỉ đơn giản là bỏ qua. Những tín hiệu này được gọi là tín hiệu thời gian riêng biệt.
Vẽ vạch ra các giá trị thực tín hiệu lor
Xem xét tín hiệu CT. Một tín hiệu CT có giá trị thực được vẽ bằng cách sử dụng các cách tiêu chuẩn để vẽ một hàm. Hãy xem xét tín hiệu hình sin trong một khoảng thời gian ngắn chúng ta có thể vẽ điều này như:
t = np.linspace(-0.02, 0.05, 1000) plt.plot(t, 325 * np.sin(2*np.pi*50*t)); plt.xlabel('t'); plt.ylabel('x(t)'); plt.title(r'Plot of CT signal \$x(t)=325 \sin(2\pi 50 t)\$'); plt.xlim([-0.02, 0.05]); #@savefig sineplot.png plt.show()
(Mã nguồn, PNG, HIRES.PNG, PDF)
Rõ ràng cốt truyện trên là một lời nói dối. Bạn không thể vẽ tín hiệu CT trên thiết bị kỹ thuật số. Trong lớp đồ họa máy tính, bạn có hoặc sẽ học được rằng một hàm (tín hiệu) được vẽ như một chuỗi các đường thẳng (và thậm chí các đường thẳng được rời rạc như một tập hợp các dấu chấm). Nhưng nó chắc chắn trông giống như một tín hiệu CT không phải là nó?
Mọi thứ là khác nhau khi chúng ta xem xét tín hiệu DT. Đưa ra các giá trị để nói với chúng ta có thể sử dụng cùng một chiến lược và vẽ nó như chúng ta đã làm cho tín hiệu CT: chỉ cần kết nối các dấu chấm $ (n, x [n]) $. Điều đó được thực hiện trong thực tế thường xuyên. Tuy nhiên, trong các ghi chú này khi xử lý sự khác biệt giữa tín hiệu CT và DT, chúng tôi muốn nhấn mạnh rằng tín hiệu DT về cơ bản chỉ là một chuỗi các số. Không cần phải suy nghĩ trong miền riêng biệt và chắc chắn không cần phải hình dung nó.
Do đó, tín hiệu DT được vẽ như một chuỗi các thanh dọc. Một âm mưu thân cây:
n = np.arange(50); dt = 0.07/50 x = np.sin(2 * np.pi * 50 * n * dt) plt.xlabel('n'); plt.ylabel('x[n]'); plt.title(r'Plot of DT signal \$x[n] = 325 \sin(2\pi 50 n \Delta t)\$'); #@savefig dtsineplot.png plt.stem(n, x);
(Mã nguồn, PNG, HIRES.PNG, PDF)
Rõ ràng cốt truyện trên là một lời nói dối. Bạn không thể vẽ tín hiệu CT trên thiết bị kỹ thuật số. Trong lớp đồ họa máy tính, bạn có hoặc sẽ học được rằng một hàm (tín hiệu) được vẽ như một chuỗi các đường thẳng (và thậm chí các đường thẳng được rời rạc như một tập hợp các dấu chấm). Nhưng nó chắc chắn trông giống như một tín hiệu CT không phải là nó?
Mọi thứ là khác nhau khi chúng ta xem xét tín hiệu DT. Đưa ra các giá trị để nói với chúng ta có thể sử dụng cùng một chiến lược và vẽ nó như chúng ta đã làm cho tín hiệu CT: chỉ cần kết nối các dấu chấm $ (n, x [n]) $. Điều đó được thực hiện trong thực tế thường xuyên. Tuy nhiên, trong các ghi chú này khi xử lý sự khác biệt giữa tín hiệu CT và DT, chúng tôi muốn nhấn mạnh rằng tín hiệu DT về cơ bản chỉ là một chuỗi các số. Không cần phải suy nghĩ trong miền riêng biệt và chắc chắn không cần phải hình dung nó.
Do đó, tín hiệu DT được vẽ như một chuỗi các thanh dọc. Một âm mưu thân cây:
t = np.linspace(-0.02, 0.05, 1000) plt.subplot(2,1,1); plt.plot(t, np.exp(2j*np.pi*50*t).real ); plt.xlabel('t'); plt.ylabel('Re x(t)'); plt.title(r'Real part of \$x(t)=e^{j 100 \pi t}\$'); plt.xlim([-0.02, 0.05]); plt.subplot(2,1,2); plt.plot(t, np.exp(2j*np.pi*50*t).imag); plt.xlabel('t'); plt.ylabel('Im x(t)'); plt.title(r'Imaginary part of \$x(t)=e^{j 100\pi t}\$'); plt.xlim([-0.02, 0.05]); #@savefig csineplot.png plt.show()
(Mã nguồn, PNG, HIRES.PNG, PDF)
Rõ ràng cốt truyện trên là một lời nói dối. Bạn không thể vẽ tín hiệu CT trên thiết bị kỹ thuật số. Trong lớp đồ họa máy tính, bạn có hoặc sẽ học được rằng một hàm (tín hiệu) được vẽ như một chuỗi các đường thẳng (và thậm chí các đường thẳng được rời rạc như một tập hợp các dấu chấm). Nhưng nó chắc chắn trông giống như một tín hiệu CT không phải là nó?
t = np.linspace(-0.02, 0.05, 1000) plt.subplot(2,1,1); plt.plot(t, np.abs(np.exp(2j*np.pi*50*t)) ); plt.xlabel(r'\$t\$'); plt.ylabel(r'\$|x(t)|\$'); plt.title(r'Absolute value of \$x(t)=e^{j 100 \pi t}\$'); plt.xlim([-0.02, 0.05]); plt.subplot(2,1,2); plt.plot(t, np.angle(np.exp(2j*np.pi*50*t))*360/(2*np.pi)); plt.xlabel('\$t\$'); plt.ylabel(r'\$\angle x(t)\$'); plt.title(r'Phase of \$x(t)=e^{j 100 \pi t}\$'); plt.xlim([-0.02, 0.05]); #@savefig cabsanglesineplot.png plt.show()
(Mã nguồn, PNG, HIRES.PNG, PDF)
Rõ ràng cốt truyện trên là một lời nói dối. Bạn không thể vẽ tín hiệu CT trên thiết bị kỹ thuật số. Trong lớp đồ họa máy tính, bạn có hoặc sẽ học được rằng một hàm (tín hiệu) được vẽ như một chuỗi các đường thẳng (và thậm chí các đường thẳng được rời rạc như một tập hợp các dấu chấm). Nhưng nó chắc chắn trông giống như một tín hiệu CT không phải là nó?phase wrapping. If we would allow angles outside the range from -180 to +180 we could obtain a perfectly straight line (doing just that is called phase unwrapping).
Mọi thứ là khác nhau khi chúng ta xem xét tín hiệu DT. Đưa ra các giá trị để nói với chúng ta có thể sử dụng cùng một chiến lược và vẽ nó như chúng ta đã làm cho tín hiệu CT: chỉ cần kết nối các dấu chấm $ (n, x [n]) $. Điều đó được thực hiện trong thực tế thường xuyên. Tuy nhiên, trong các ghi chú này khi xử lý sự khác biệt giữa tín hiệu CT và DT, chúng tôi muốn nhấn mạnh rằng tín hiệu DT về cơ bản chỉ là một chuỗi các số. Không cần phải suy nghĩ trong miền riêng biệt và chắc chắn không cần phải hình dung nó.
Do đó, tín hiệu DT được vẽ như một chuỗi các thanh dọc. Một âm mưu thân cây:
Âm mưu các tín hiệu có giá trị phức tạp
Bây giờ hãy xem xét tín hiệu CT có giá trị phức tạp:¶Lưu ý rằng cả hai ô của tín hiệu phức tạp là tương đương. Cả hai đều đại diện cho cùng một tín hiệu. Cũng lưu ý hành vi dường như kỳ lạ của biểu đồ pha (góc). Nó trông khá không liên tục. Nhưng nó thực sự không phải vì pha nhảy từ +180 độ lên -180 độ và đó tất nhiên là cùng một góc! Hiện tượng này sẽ được nhìn thấy khá nhiều khi vẽ giai đoạn của các tín hiệu và chức năng phức tạp. Nó được gọi là bọc pha. Nếu chúng ta cho phép các góc bên ngoài phạm vi từ -180 đến +180, chúng ta có thể có được một đường thẳng hoàn toàn (làm chỉ được gọi là giải nén pha).2. Step function **
Một vài chức năng đặc biệt
Trong DSP, chúng tôi sử dụng một số chức năng đặc biệt:¶Lưu ý rằng cả hai ô của tín hiệu phức tạp là tương đương. Cả hai đều đại diện cho cùng một tín hiệu. Cũng lưu ý hành vi dường như kỳ lạ của biểu đồ pha (góc). Nó trông khá không liên tục. Nhưng nó thực sự không phải vì pha nhảy từ +180 độ lên -180 độ và đó tất nhiên là cùng một góc! Hiện tượng này sẽ được nhìn thấy khá nhiều khi vẽ giai đoạn của các tín hiệu và chức năng phức tạp. Nó được gọi là bọc pha. Nếu chúng ta cho phép các góc bên ngoài phạm vi từ -180 đến +180, chúng ta có thể có được một đường thẳng hoàn toàn (làm chỉ được gọi là giải nén pha).
Một vài chức năng đặc biệt
Trong DSP, chúng tôi sử dụng một số chức năng đặc biệt:
property:
1. Tín hiệu không đổi
Hàm liên tục
CT
Dt
** 2. Chức năng bước **
n = np.arange(10); x = np.zeros_like(n); x[2]=3; plt.vlines(n,0,x,'b'); plt.ylim(-1,4); plt.plot(n,0*n, 'b'); #@savefig pulseplot.png plt.show();
(Mã nguồn, PNG, HIRES.PNG, PDF)
Hàm bước giống như một công tắc đèn được bật tại t = 0.
Chức năng bước¶Lưu ý rằng cả hai ô của tín hiệu phức tạp là tương đương. Cả hai đều đại diện cho cùng một tín hiệu. Cũng lưu ý hành vi dường như kỳ lạ của biểu đồ pha (góc). Nó trông khá không liên tục. Nhưng nó thực sự không phải vì pha nhảy từ +180 độ lên -180 độ và đó tất nhiên là cùng một góc! Hiện tượng này sẽ được nhìn thấy khá nhiều khi vẽ giai đoạn của các tín hiệu và chức năng phức tạp. Nó được gọi là bọc pha. Nếu chúng ta cho phép các góc bên ngoài phạm vi từ -180 đến +180, chúng ta có thể có được một đường thẳng hoàn toàn (làm chỉ được gọi là giải nén pha).
Một vài chức năng đặc biệt
- Trong DSP, chúng tôi sử dụng một số chức năng đặc biệt:
- 1. Tín hiệu không đổi
Hàm liên tục