CÁC BÀI THỰC HÀNH MÔN HỌC TÍN HIỆU VÀ HỆ THỐNG - Bài 1
lượt xem 110
download
Mục đích • Làm quen công cụ phần mềm MATLAB. • Sử dụng MATLAB để thực hiện một số tính toán thông dụng với vector, ma trận và số phức • Sử dụng MATLAB để biểu diễn và vẽ đồ thị của một số tín hiệu. II. Yêu cầu đối với sinh viên • Cài đặt phần mềm MATLAB, thực hiện trước bài 1.1 ở nhà. • Đọc tài liệu hướng dẫn và trả lời được các câu hỏi của CBHD trước khi làm thực hành • Hoàn thành nội dung bài thực hành (kể cả các bài về nhà) trước khi tham dự buổi tiếp theo...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: CÁC BÀI THỰC HÀNH MÔN HỌC TÍN HIỆU VÀ HỆ THỐNG - Bài 1
- TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KHOA ĐIỆN CÁC BÀI THỰC HÀNH MÔN HỌC TÍN HIỆU VÀ HỆ THỐNG ( 6 bài) Họ và tên sinh viên: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mã lớp thí nghiệm: . . . . . . . . . . Mã số sinh viên: . . . . . . . . . . (Sinh viên phải nộp lại vào buổi bảo vệ tuần cuối cùng để chấm điểm) HÀ NỘI - 2010 1-1
- BÀI 1 Tính toán và vẽ đồ thị với MATLAB I. Mục đích • Làm quen công cụ phần mềm MATLAB. • Sử dụng MATLAB để thực hiện một số tính toán thông dụng với vector, ma trận và số phức • Sử dụng MATLAB để biểu diễn và vẽ đồ thị của một số tín hiệu. II. Yêu cầu đối với sinh viên • Cài đặt phần mềm MATLAB, thực hiện trước bài 1.1 ở nhà. • Đọc tài liệu hướng dẫn và trả lời được các câu hỏi của CBHD trước khi làm thực hành • Hoàn thành nội dung bài thực hành (kể cả các bài về nhà) trước khi tham dự buổi tiếp theo III. Nội dung 3.1 Làm quen với cửa sổ lệnh và soạn thảo chương trình m file trong MATLAB Mục này do CBHD hướng dẫn cho SV (khoảng 10ph). 3.2 Tính toán với MATLAB Bài 1.1 (tự chuẩn bị và làm ở nhà): Phép nhân, chia và luỹ thừa với vector và ma trận MATLAB là một công cụ phần mềm tính toán rất mạnh, đặc biệt thích hợp cho các lĩnh vực khoa học và kỹ thuật. Một đặc điểm hết sức quan trọng là mọi tính toán trong MATLAB đều được dựa trên cơ sở các phép toán cơ bản với vector và ma trận của số phức. MATLAB phân biệt hai cách thực hiện phép nhân, chia và lũy thừa. Đó là nhân, chia, lũy thừa kiểu ma trận, và nhân, chia, lũy thừa kiểu từng phần tử. Chúng được định nghĩa như sau: 1. Phép nhân ma trận (nhân vector hàng với vector cột) A = [ a1 a2 a3 … an ] Đặt B = [b1 b2 b3 … bn ]′ và là hai vector. Để ý rằng A được định nghĩa là vector hàng trong khi B được định nghĩa là vector cột, vì được chỉ thị bởi dấu chuyển vị (’). Ở đây, phép nhân giữa vector hàng A với vector cột B được thực hiện bởi toán tử nhân ma trận (*). Do đó: A*B = a1b1 + a2b2 + a3b3 + + an bn = một giá trị Ví dụ, nếu A = [1 2 3 4 5] và B = [-2 6 -3 8 7]’ thì phép nhân ma trận A*B sẽ cho kết quả là 68, tức là A*B = 1× (−2) + 2 × 6 + 3 × (−3) + 4 × 8 + 5 × 7 = 68 Điều này được kiểm chứng bởi đoạn lệnh MATLAB sau đây: A=[1 2 3 4 5]; B=[ −2 6 −3 8 7]'; A*B % Observe transpose operator (‘) in B ans = 68 Bây giờ, giả thiết A và B đều là vector hàng, chúng ta hãy thử thực hiện phép nhân ma trận với các câu lệnh MATLAB sau: A=[1 2 3 4 5]; B=[−2 6 −3 8 7]; A*B % No transpose operator (‘) here Khi các lệnh này được thực hiện, MATLAB sẽ hiển thị dòng tin nhắn: ??? Error using ==> * Inner matrix dimensions must agree. Các em hãy giải thích dòng tin nhắn đó: ........................................................................................................................................................... 2. Phép nhân từng phần tử (nhân vector hàng với vector hàng) C = [ c1 c2 c3 … cn ] Đặt D = [ d1 d 2 d3 … d n ] và là hai vector hàng. Ở đây phép nhân giữa vector hàng C với vector hàng D được thực hiện bởi toán tử nhân chấm (.*). Không có khoảng trống giữa dấu chấm và dấu nhân. Do đó: 1-1
- C.*D = [ c1d1 c2 d 2 c3 d3 … cn d n ] Kết quả của phép nhân chấm là một vector hàng khác, với cùng số phần tử của các vector hàng C và D. Ví dụ, đặt C = [1 2 3 4 5] và D = [-2 6 -3 8 7], phép nhân chấm của hai vector này cho kết quả sau: C.*D = [1× (−2) 2 × 6 3 × (−3) 4 × 8 5 × 7 ] = [ −2 12 −9 32 35] Kiểm tra với MATLAB bằng đoạn lệnh sau: C=[1 2 3 4 5]; % Vectors C and D must have D=[−2 6 −3 8 7]; % same number of elements C.*D % We observe that this is a dot multiplication ans = -2 12 -9 32 35 Tương tự như vây, toán tử chia (/) và lũy thừa (^) được sử dụng cho phép chia và lũy thừa kiểu ma trận, trong khi đó toán tử chia chấm (./) và lũy thừa chấm (.^) được sử dụng cho phép chia và lũy thừa từng phần tử. Chú ý rằng, dấu chấm (.) không cần thiết với toán tử cộng (+) và ( − ). 3.3 Vẽ đồ thị với MATLAB Bài 1.2 (thực hiện có hướng dẫn tại PTN): Vẽ đồ thị đặc tính tần số Xét mạch điện trên Hình 1.1, trong đó tần số góc ω (radian/s) của điện áp cung cấp thay đổi từ 300 đến 3000 với bước tính là 100 radian/s, trong khi biên độ của điện áp được giữ không đổi. Ứng với mỗi tần số, thiết bị đo ghi lại độ lớn của trở kháng Z = V A và các số liệu được cho trong Bảng 1.1. Hãy vẽ độ lớn của trở kháng, tức là Z theo tần số góc ω. Bảng 1.1 Hình 1.1 Nhập số liệu dưới dạng vector: Thông thường chúng ta muốn vẽ đồ thị của một tập hợp các cặp số liệu được sắp xếp theo thứ tự. Trong MATLAB, tất cả các dãy số đều được nhập vào dưới dạng vector hoặc ma trận, cụ thể cho bài tập ta cần sử dụng hai biến w và z như sau (giữa các phần tử của vector được phân biệt bởi một dấu cách): w=[300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900... 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000]; % z=[39.339 52.789 71.104 97.665 140.437 222.182 436.056 1014.938 469.830 266.032... 187.052 145.751 120.353 103.111 90.603 81.088 73.588 67.513 62.481 58.240 54.611... 51.468 48.717 46.286 44.122 42.182 40.432 38.845]; 1-2
- Lưu ý: Chúng ta không thể gõ ω (omega) trong cửa sổ lệnh MATLAB, do đó chúng ta sẽ sử dụng chữ cái w để thay thế. Nếu một câu lệnh, hay một vector hàng quá dài để vừa một dòng, nó có thể được tiếp tục ở dòng tiếp theo bằng cách gõ dấu ba chấm, sau đó ấn để bắt đầu dòng mới, và tiếp tục nhập dữ liệu. Ngoài ra, chúng ta sử dụng dấu chấm phẩy (;) để tránh việc hiển thị dữ liệu chúng ta không quan tâm lên màn hình. Sử dụng lệnh plot(x,y): Lệnh plot(x,y) của MATLAB cho phép vẽ đồ thị biểu diễn từng giá trị chứa trong vector y theo giá trị của phần tử thứ tự tương ứng trong vector x . Sau khi gõ tiếp lệnh plot(w,z) trong cửa sổ lệnh MATLAB, ta sẽ nhận được đồ thị biểu diễn hàm w theo z trong một cửa sổ riêng. Đồ thị này được gọi là đáp ứng biên độ tần số của mạch điện. Các em hãy vẽ lại đồ thị này vào Hình 1.2 dưới đây. Ta có thể tạo cho đồ thị trên, hay một đồ thị bất kỳ, trông đẹp mắt hơn bằng các lệnh sau: grid on: kẻ các đường lưới cho đ ồ th ị . grid off: bỏ các đường lưới. box off: bỏ khung (đường nét liền bao quanh đồ thị) box on: vẽ lại khung đồ thị title(‘string’): Tạo một dòng ký tự string (nhãn) cho đồ thị. xlabel(‘string’) và ylabel(‘string’): đánh nhãn cho trục x và trục y. Hình 1.2. Đồ thị biểu diễn trở kháng Z theo tần số ω cho Bài 1.2. Sử dụng thang đo logarithm: Đáp ứng biên độ tần số thường được biểu diễn với trục x chia theo thang đo logarithm bằng cách sử dụng lệnh semilogx(x,y) (và bổ sung các tiêu đề) như sau: semilogx(w,z); grid; % Replaces the plot(w,z) command title('Magnitude of Impedance vs. Radian Frequency'); xlabel('w in rads/sec'); ylabel('|Z| in Ohms') Các em hãy vẽ lại đồ thị sau khi thực hiện đoạn lệnh trên vào Hình 1.3 dưới đây. Magnitude of Impedance vs. Radian Frequency 1200 1000 800 |Z| in Ohms 600 400 200 0 2 3 4 10 10 10 w in rads/sec Hình 1.3. Đồ thị đáp ứng tần số cho Bài 1.2. Lưu ý: Để biểu diễn trục y theo thang đo logarithm, ta sử dụng lệnh semilogy(x,y), để biểu diễn thang đo logarithm cho cả hai trục ta sử dụng lệnh loglog(x,y). 1-3
- Bài 1.3 (thực hiện có hướng dẫn tại PTN): Vẽ tín hiệu hình sin Ta sẽ thực hành vẽ đồ thị các sóng sin 3 pha. Lưu ý rằng, thực chất trên máy tính ta chỉ có thể vẽ các tín hiệu không liên tục (tức là chỉ vẽ được các điểm rời rạc). Tuy nhiên, những tín hiệu không liên tục có thể biểu diễn gần đúng bằng vẽ các điểm dữ liệu rời rạc gần nhau. Trước hết, ta cần tạo một vector lưu trữ dãy giá trị thời gian (cách đều nhau). Điều này có thể thực hiện bởi hàm linspace(giá trị đầu, giá trị cuối, số điểm dữ liệu): t=linspace(0, 2*pi, 60); % pi is a built−in function in MATLAB; Hàm này quy định số điểm dữ liệu nhưng không quy định khoảng cách giữa các điểm dữ liệu đó. Ta cũng có thể sử dụng lệnh t = first: increment: last để qui định khoảng cách giữa các điểm dữ liệu chứ không phải số điểm dữ liệu, ví dụ t = 0:0.02*pi:2*pi hoặc t = (0: 0.02: 2)*pi; Các sóng sin ba pha được tạo bởi các hàm MATLAB: y=sin(t); u=sin(t+2*pi/3); v=sin(t+4*pi/3); Ta sẽ vẽ 3 tín hiệu trên một đồ thị bằng lệnh: plot(t,y,t,u,t,v); % The x−axis must be specified for each function hoặc plot(t,[y;u;v]); % [y;u;v] is a three-row matrix Sau đó vẽ thêm lưới và bổ sung các chú thích như sau: grid on, box on, % turn grid and axes box on text(0.75, 0.65, 'sin(x)'); text(2.85, 0.65, 'sin(x+2*pi/3)'); text(4.95, 0.65, 'sin(x+4*pi/3)') Sau khi thực hiện đoạn lệnh trên, ta sẽ nhận được đồ thị trong đó các tín hiệu được biểu diễn như liên tục. Các em hãy vẽ lại đồ thị đó (ghi đủ các thông ghi chú) vào Hình 1.4 dưới đây: 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7 Hình 1.4. Các dạng sóng ba pha Nếu sửa lại lệnh plot(t,[y;u;v]) trên đây một chút như sau (thêm ký hiệu ’.’): plot(t,[y;u;v], ‘.’) ta sẽ thấy các tín hiệu được biểu diễn thành dãy giá trị rời rạc (mỗi tín hiệu gồm đúng 60 giá trị). Hãy giải thích lý do các tín hiệu trên Hình 1.4 lại nhìn như các tín hiệu liên tục? ........................................................................................................................................................... Trong các ví dụ trên, chúng ta đã không quy định kiểu đường, kiểu đánh dấu và kiểu màu cho các đồ thị. Tuy nhiên, MATLAB cho phép chúng ta lựa chọn rất nhiều kiểu đường, ký hiệu đồ thị và màu sắc khác nhau. Những kiểu này, hoặc sự kết hợp của chúng, được thực hiện bởi lệnh plot(x,y,s) trong đó s là chuỗi ký tự bao gồm những ký tự được cho trong ba cột của Bảng 1.2. MATLAB không có màu mặc định, nó bắt đầu từ màu xanh dương và quay vòng theo bảy màu đầu tiên được liệt kê trong Bảng 1.2. Cũng như vậy, không có kiểu đánh dấu mặc định, sẽ không có kiểu đánh dấu nào được vẽ trừ phi 1-4
- chúng ta chỉ định chúng. Kiểu đường mặc định là đường nét liền. Tuy nhiên, với những phiên bản MATLAB mới nhất, chúng ta có thể chọn màu sắc, độ rộng của đường và các lựa chọn khác trực tiếp trên Cửa sổ hình vẽ. Bảng1.2 Các kiểu đường, màu sắc, và kiểu đánh dấu trong MATLAB Ví dụ, plot(x,y,‘m*:’) vẽ một đường chấm chấm màu đỏ tươi, với các dấu sao tại các điểm dữ liệu, và plot(x,y,‘rs’) đánh dấu các hình vuông màu đỏ tại các điểm dữ liệu, nhưng không vẽ kiểu đường nào. Nếu chúng ta muốn nối các điểm dữ liệu bằng đường nét liền, chúng ta phải gõ plot(x,y,‘rs−’). Nếu cần thêm thông tin, chúng ta có thể gõ help plot trên Cửa sổ lệnh của MATLAB. Bài 1.4 (thực hiện có hướng dẫn tại PTN): Dịch tín hiệu (thời gian) Chương trình sau đây vẽ tín hiệu sin và đồ thị của nó khi thực hiện phép dịch tín hiệu (một khoảng thời gian). Các em hãy gõ lại chương trình này trong file soạn thảo của MATLAB và lưu lại với một tên file (ví dụ t_shift.m), thực hiện chương trình này và vẽ lại đồ thị (cuối cùng) của nó trên Hình 1.5. Ngoài ra, hãy ghi lời chú thích vào sau các dấu % của một số dòng lệnh (một số dòng đã được làm mẫu). % Chuong trinh 1.3. Phep dich mot tin hieu % Dich cua tin hieu 3*cos(2*pi*t/4)u(t) clear; % xoa cac bien va ham trong bo nho clf; % tinc=0.01; % khoang cach cac diem tren truc thoi gian T=5; % for k=[-1 1 2] % cac gia tri thoi gian duoc dich: -1, 1 va 2 buoc m=1; % chi so cua mang x=(-5:tinc:5)*0;xs=x; for t=-5:tinc:5 if (t >= 0) x(m)=3*cos(2*pi*t/4); % end if ((t+k) >= 0) xs(m)=3*cos(2*pi*(t+k)/4); % end m=m+1; end t=-T:tinc:T; % plot(t,x,t,xs,':') ylabel('x(t)') % 1-5
- xlabel('t') % legend('x(t)',['x(t+(',num2str(k),'))']) title('shift of x(t)=3cos(2\pit/4)u(t)') disp('see the plot and press any key to continue') pause % doi cho den khi an mot phim bat ky end shift of x(t)=3cos(2πt/4)u(t) 3 x(t) x(t+(2)) 2 1 x(t) 0 -1 -2 -3 -5 -4 -3 -2 -1 0 1 2 3 4 5 t Hình 1.5. Phép dịch tín hiệu cho Bài 1.4 Bài 1.5 (thực hiện có hướng dẫn tại PTN) Viết đoạn Script MATLAB để vẽ đồ thị cho tín hiệu sau: t2 y = f (t ) = 3e −4t cos 5t − 2e−3t sin 2t + t +1 trong khoảng thời gian 0 ≤ t ≤ 5 giây. t=0: 0.01: 5; % Define t−axis in 0.01 increments y=3 .* exp(−4 .* t) .* cos(5 .* t)−2 .* exp(−3 .* t) .* sin(2 .* t) + t .^2 ./ (t+1); plot(t,y); grid; xlabel('t'); ylabel('y=f(t)'); title('Plot for Example 2.2') Các em hãy vẽ lại đồ thị của bài tập này lên Hình 1.6. Plot for Example 2.2 5 4 3 y=f(t) 2 1 0 -1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 t Hình 1.6. Đồ thị cho Bài 1.5 Bài 1.6 (về nhà tự làm): Sử dụng phép dịch tín hiệu Viết chương trình MATLAB để vẽ tín hiệu x(t ) = r (t ) ( u (t ) − u (t − 1) ) , sử dụng phép dịch tín hiệu trong đó u (t ) là tín hiệu bước nhảy đơn vị (unit step) và r (t ) là tín hiệu dốc (unit ramp). 1-6
- Bài 1.7 (về nhà tự làm) Hãy vẽ các hàm y = sin 2 x, z 2 = cos 2 x, w = sin 2 x ⋅ cos 2 x, v = sin 2 x / cos 2 x trong khoảng 0 ≤ x ≤ 2π sử dụng 100 điểm dữ liệu. Sử dụng lệnh subplot để biểu diễn các hàm này trên các đồ thị con trong một hình vẽ. Sử dụng đoạn script MATLAB tạo bốn đồ thị con được cho dưới đây: x=linspace(0,2*pi,100); % Interval with 100 data points y=(sin(x).^ 2); z=(cos(x).^ 2); w=y.* z; v=y./ (z+eps); % add eps to avoid division by zero subplot(221); % upper left of four subplots plot(x,y); axis([0 2*pi 0 1]); title('y=(sinx)^2'); subplot(222); % upper right of four subplots plot(x,z); axis([0 2*pi 0 1]); title('z=(cosx)^2'); subplot(223); % lower left of four subplots plot(x,w); axis([0 2*pi 0 0.3]); title('w=(sinx)^2*(cosx)^2'); subplot(224); % lower right of four subplots plot(x,v); axis([0 2*pi 0 400]); title('v=(sinx)^2/(cosx)^2'); Các em hãy tìm hiểu và giải thích từng dòng lệnh, sau đó vẽ lại bốn đồ thị đó trên Hình 1.7. y=(sinx)2 z=(cosx)2 1 1 0.5 0.5 0 0 0 2 4 6 0 2 4 6 w=(sinx)2*(cosx)2 v=(sinx)2/(cosx)2 400 300 0.2 200 0.1 100 0 0 0 2 4 6 0 2 4 6 Hình 1.7. Các đồ thị con cho Bài 1.7 Bài 1.8 (về nhà tự làm): Tính toán và biểu diễn số phức Bài tập này minh họa khả năng của MATLAB với các số phức. real(z) và imag(z) hiển thị phần thực và phần ảo của số phức z = x + iy. abs(z) và angle(z) tính toán độ lớn và góc pha của số phức z = x + iy = r ∠θ . polar(theta,r) vẽ đồ thị trong tọa độ cực, trong đó r là độ lớn và theta là góc pha tính theo radian. round(n) làm tròn một số thực n thành số nguyên gần nhất với nó. 1-7
- Xét mạch điện ở Hình 1.1, với các giá trị điện trở, điện cảm và điện dung đã cho, trở kháng của mạch Z ab là một hàm của tần số ω có biểu thức như sau: 104 − j (106 ω ) Z ab = Z = 10 + 10 + j (0.1ω − 105 ω ) Hãy viết một đoạn lệnh MATLAB để thực hiện những yêu cầu sau và vẽ lại các đồ thị trên Hình 1.9. a) Vẽ Re {Z } (phần thực của trở kháng Z ) theo tần số ω. b) Vẽ Im {Z } (phần ảo của trở kháng Z ) theo tần số ω. c) Vẽ trở kháng Z theo tần số ω trong hệ tọa độ cực. Hãy viết đoạn lệnh vào ô chữ nhật dưới đây (dòng lệnh đầu tiên được viết sẵn): Hình 1.8. Mạch điện cho Bài 1.8 w=0: 1: 2000; % Define interval with one radian interval 1500 Real part of Z 1000 90 2000 120 60 500 1000 150 30 Polar Plot of Z 0 0 500 1000 1500 2000 radian frequency w 180 0 500 210 330 Imaginary part of Z 0 240 300 270 -500 -1000 0 500 1000 1500 2000 radian frequency w Hình 1.9 Các đồ thị cho Bài 1.8 1-8
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học: Làm quen với phần mềm Matlab
9 p | 45 | 7
-
Thực trạng giảng dạy thực hành trong môn Sinh học tại các trường trung học phổ thông khu vực đồng bằng sông Cửu Long và thành phố Hồ Chí Minh
9 p | 37 | 5
-
Bài thực hành Vi sinh vật học thú y
14 p | 61 | 5
-
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học - Bài thực hành số 4: Khảo sát một quá trình truyền nhiệt
5 p | 44 | 4
-
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học - Bài thực hành số 1: Khảo sát động học của một bình phản ứng lý tưởng khuấy liên tục
5 p | 68 | 4
-
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học - Bài thực hành số 3: Khảo sát động học một hệ phản ứng dạng ống lý tưởng
5 p | 41 | 4
-
Nghiên cứu và xử lý tình huống trong giảng dạy các bài thực hành thí nghiệm sinh học ở trung học phổ thông
5 p | 21 | 3
-
Vận dụng dạy học dựa trên vấn đề cho môn Thực hành Hóa đại cương tại Đại học Công nghệ TP. HCM
6 p | 39 | 3
-
Bài thực hành môn học Mô hình hóa, mô phỏng và tối ưu hóa các quá trình hóa học - Bài thực hành số 2: Khảo sát một hệ phản ứng dạng ống lý tưởng trạng thái dừng
5 p | 49 | 3
-
Thực trạng dạy học thực hành môn Sinh học phát triển phẩm chất, năng lực học sinh trung học phổ thông tại thành phố Hồ Chí Minh
9 p | 18 | 3
-
Tích hợp các yếu tố thuật toán và lập trình vào dạy học hàm số ở phổ thông
8 p | 35 | 2
-
Dạy học xác suất thống kê cho học viên chuyên ngành Trinh sát kỹ thuật tại Học viện Khoa học Quân sự
5 p | 85 | 2
-
Sử dụng phần mềm Dreamweave để thiết kế các bài thực hành vi sinh vật theo định hướng phát triển năng lực
9 p | 25 | 2
-
Xây dựng bộ tư liệu hỗ trợ dạy học thực hành môn Sinh học trung học phổ thông
6 p | 50 | 2
-
Quy trình rèn năng lực dạy học thực hành cho sinh viên Đại học Sư phạm ngành Sinh học
12 p | 15 | 1
-
Dạy học tích cực và đánh giá trong giảng dạy thực hành môn Trắc địa cho sinh viên chuyên ngành Kĩ thuật tại trường Đại học Tiền Giang
5 p | 64 | 1
-
Thực trạng dạy học thực hành sinh học của giáo viên trung học phổ thông ở một số tỉnh khu vực phía Nam
13 p | 0 | 0
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn