2.4. Các phép toán trên kiểu tập hợp set trong Python
Phép lấy hiệu hai tập hợp set trong Python
Phép lấy hiệu hai tập hợp S1 và S2, sử dụng cú pháp S1-S2 hoặc S1.difference(S2).
Kết quả trả về là một tập mới chứa các phần tử thuộc tập S1 và không thuộc tập S2. Một
phép toán tương tự là S1.symmetric_difference(S2) hoặc S1^S2 có tác dụng như S2 – S1.
>>> S1 = {1, 2, 3, 4, 5, 6}
>>> S2 = {0, 2, 4, 6, 8, 10}
>>> S1 – S2
{1, 3, 5} #Hiệu của tập S1 và S2
Phép lấy hợp hai tập hợp set trong Python
16
Sử dụng cú pháp S1|S2 hoặc S1.union(S2) để lấy hợp hai tập hợp S1 và S2. Kết quả
trả về một tập mới chứa tất cả các phần tử thuộc tập S1 và tất cả các phần tử thuộc
tập S2. Đương nhiên, nếu phần tử nào đó thuộc cả hai tập hợp thì chỉ được kể một lần.
>>> S1 = {1, 2, 3, 4, 5, 6}
>>> S2 = {0, 2, 4, 6, 8, 10}
>>> S1|S2
{0, 1, 2, 3, 4, 5, 6, 8, 10} #Hợp của S1 và S2
Phép lấy giao hai tập hợp set trong Python
Sử dụng cú pháp S1 & S2 hoặc S1.intersection(S2) để lấy giao hai tập hợp S1 và S2.
Kết quả trả về một tập mới chứa tất cả các phần tử thuộc đồng thời cả hai tập S1 và S2.
Tức là các phần tử chung của hai tập hợp đó.
>>> S1 = {1, 2, 3, 4, 5, 6}
>>> S2 = {0, 2, 4, 6, 8, 10}
>>> S1&S2
{2, 4, 6} #Giao của S1 và S2 gồm ba phần tử 2, 4, 6
Toán tử kiểm tra tập con
Để kiểm tra tập S1 có là tập con của S2 hay không, ta sử dụng cú pháp S1<=
S2 hoặc S1.issubset(S2). Kết quả trả về là kiểu Boolean True nếu đúng và False nếu sai.
Nhắc lại rằng, tập S1 là tập con của S2 nếu mọi phần tử của S1 đều là phần tử của S2 (tức
là cũng thuộc tập S2).
>>> S1 = {1, 2, 3, 4, 5, 6, 7}
>>> S2 = {1, 2, 5}
>>> S3 = {1, 2, 5, 9}
>>> S4 = set()
>>> S1.issubset(S1) #Mọi tập đều là tập con của chính bản thân nó
True
>>> S2.issubset(S1)
True
17
>>> S3.issubset(S1)
False
>>> S4.issubset(S1) #Tập rỗng là tập con của mọi tập hợp
True
Ngược lại của tập con, chúng ta có thể sử dụng S1 >= S2 hoặc S1.issupperset(S2) để
kiểm tra S1 có là tập cha của (tức là có chứa) S2 hay không, trả về True nếu đúng
và False nếu sai. Tập S1 là tập cha của S2 nếu mọi phần tử của S2 đều thuộc tập S1.
>>> S1 = {1, 2, 3, 4, 5, 6, 7}
>>> S2 = {1, 2, 5}
>>> S3 = {1, 2, 5, 9}
>>> S4 = set()
>>> S1.issupperset(S1) #Mọi tập đều là tập cha của chính bản thân nó
True
>>> S1.issupperset(S2)
True
>>> S1.issupperset(S3)
False
>>> S1.issupperset(S4)
True
Tập con thực sự, tập cha thực sự
Sử dụng cú phsp S1S2 để kiểm tra S1 có là tập con thực sự, tập cha thực sự
của S2 hay không. Tập S1 là tập con thực sự của S2 nếu S1 là tập con
của S1 nhưng S1 và S2 không bằng nhau. Tương tự đối với khái niệm tập cha thực sự.
2.5. Viết một chương trình Scilab về tín hiệu điện tử
// Định nghĩa tín hiệu điện tử
18
function y = electronic_signal(t)
y = 5 * sin(2 * %pi * 1e3 * t) + 3 * cos(2 * %pi * 5e3 * t);
endfunction
// Tạo dữ liệu cho trục thời gian
t = linspace(0, 0.01, 1000);
// Tính giá trị của tín hiệu điện tử tại các điểm thời gian
signal = electronic_signal(t);
// Vẽ đồ thị tín hiệu điện tử
plot(t, signal)
xlabel(‘Thời gian (s) ’)
ylabe(‘Amplitude’)
title(‘Biểu đồ tín hiệu điện tử’)
// Hiển thị đồ thị
xs2png(0, ‘electronic_signal.png’)
2.6. Kết quả mô phỏng bằng Scilab
19
20
KẾT LUẬN
Trong tiểu luận này, chúng ta đã đi qua một tổng quan về lập trình hướng đối tượng
trong Python và ứng dụng Scilab để thiết kế mô phỏng tín hiệu qua bộ lọc trung bình
động trong điện tử viễn thông. Chúng ta đã khám phá các khái niệm cơ bản của lập trình
hướng đối tượng như lớp, đối tượng, phương thức và thuộc tính, và hiểu cách chúng có
thể được áp dụng để tạo ra các mô hình mô phỏng tín hiệu. Sau đó, chúng ta đã giới
thiệu Scilab, một môi trường tính toán mã nguồn mở mạnh mẽ và linh hoạt. Scilab cung
cấp các công cụ và chức năng để thiết kế, mô phỏng và phân tích tín hiệu trong điện tử
viễn thông. Chúng ta đã thấy cách sử dụng Scilab để thực hiện quy trình thiết kế mô
phỏng tín hiệu qua bộ lọc trung bình động. Qua quá trình mô phỏng, chúng ta đã có cái
nhìn sâu hơn về cách bộ lọc trung bình động hoạt động và ảnh hưởng của nó đến tín
hiệu. Chúng ta đã tạo ra tín hiệu nguồn, thêm tạp âm và nhiễu vào tín hiệu thu, sau đó áp
dụng bộ lọc trung bình động để loại bỏ nhiễu và tái tạo tín hiệu gốc. Kết quả mô phỏng
đã được hiển thị và phân tích trong miền thời gian và miền tần số.
Em xin cảm ơn TS. Lê Trọng Hiếu đã giảng dạy môn Kỹ thuật lập trình trong Điện tử Viễn
thông để giúp em có những kiến thức để hoàn thành bài tiểu luận này.
21
TÀI LIỆU THAM KHẢO
[1] Lê Trọng Hiếu, "Tài liệu môn học kỹ thuật lập trình trong Điện tử Viễn thông", Đại học
Điện Lực.
[2] Nguyễn Văn Lương, "Lập trình Python - Các kiểu dữ liệu tập hợp trong Python. ", Nhà
xuất bản Khoa học và Kỹ thuật, 2015.
[3] Lê Ngọc Thạch, "Python và Các kiểu dữ liệu tập hợp trong Python. ", Nhà xuất bản
Thống kê, 2016. [4] Scilab Wiki
Chia sẻ với bạn bè của bạn: |