Tải bản đầy đủ (.pdf) (38 trang)

TH Tin học kỹ thuật matlab

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.4 MB, 38 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

ĐẠI HỌC CÔNG NGHỆ TP.HCM

THỰC HÀNH TIN HỌC KỸ
THUẬT

Biên soạn:
ThS. Phạm Hùng Kim Khánh

www.hutech.edu.vn


THỰC HÀNH TIN HỌC KỸ THUẬT
Ấn bản 2019



MỤC LỤC

I

MỤC LỤC
MỤC LỤC ................................................................................................................... 1
HƯỚNG DẪN .............................................................................................................. 2
BÀI 1: CƠ SỞ VỀ MATLAB ............................................................................................ 3
1.1 MA TRẬN .............................................................................................................. 6
1.2 VECTOR ............................................................................................................... 7
1.3 ĐA THỨC .............................................................................................................. 7
1.4 ĐỒ HOẠ ............................................................................................................... 8
1.5 SCRIPT - FUNCTION ............................................................................................. 14


BÀI 2: GUI (GRAPHICAL USER INTERFACE) .............................................................. 19
BÀI 3: SIMULINK ...................................................................................................... 24
BÀI 4: SYMBOLIC ...................................................................................................... 24
TÀI LIỆU THAM KHẢO ................................................................................................ 35


II

HƯỚNG DẪN

HƯỚNG DẪN
MÔ TẢ MÔN HỌC
Thực hành tin học kỹ thuật là môn học hỗ trợ cho môn Tin học kỹ thuật. Môn học
này dựa trên MATLAB để hỗ trợ cho các môn học trong kỹ thuật.

NỘI DUNG MÔN HỌC


Bài 1. Cơ sở về MATLAB.



Bài 2: GUI.



Bài 3: Simulink.




Bài 4: Symbolic.

KIẾN THỨC TIỀN ĐỀ
Môn học Thực hành tin học kỹ thuật đòi hỏi sinh viên có nền tảng về Tin học kỹ
thuật.

YÊU CẦU MÔN HỌC
Người học phải dự học đầy đủ các buổi lên lớp và làm bài tập đầy đủ.

CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC
Để học tốt môn này, người học cần thực hành theo hướng dẫn, làm các bài tập; đọc
trước bài mới và tìm thêm các thông tin liên quan đến bài học.

PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC
Môn học được đánh giá gồm:


Điểm quá trình: 50%. Hình thức và nội dung do giảng viên quyết định, phù hợp với
quy chế đào tạo và tình hình thực tế tại nơi tổ chức học tập.



Điểm thi: 50%. Hình thức bài thi trên máy tính trong 90 phút.


BÀI 1: CƠ SỞ VỀ MATLAB

3

BÀI 1: CƠ SỞ VỀ MATLAB

Sau khi học xong bài này, người học có thể:


Sử dụng phần mềm MATLAB.



Thực hiện tạo các script file hay function và lưu trữ trên MATLAB.



Biết được các công cụ cơ bản trên MATLAB.
MATLAB (Matrix laboratory) là phần mềm dùng để giải các bài toán kỹ thuật, đặc biệt

là các bài toán liên quan đến ma trận. MATLAB cung cấp các toolboxes, tức các hàm mở
rộng môi trường MATLAB để giải quyết các vấn đề đặc biệt như xử lý tín hiệu số, hệ thống
điều khiển, mạng neuron, fuzzy logic, mô phỏng v.v.
Cửa sổ biểu tượng của chương trình MATLAB:


4

BÀI 1: CƠ SỞ VỀ MATLAB

Cửa sổ làm việc của MATLAB:

Thư mục
hiện hành

Workspace: các


Danh sách các file

biến trong bộ nhớ

hiện có trong thư
mục hiện hành



Cửa sổ lệnh

Nút Start: chứa

Các lệnh đã

các toolbox

thực hiện

Cửa sổ lệnh (Command window):

Là cửa sổ giao tiếp chính của MATLAB bởi đây là nơi nhập giá trị các biến, hiển thị giá
trị, tính toán giá trị của biểu thức, thực thi các hàm có sẵn trong thư viện hoặc các hàm
do người dùng lập trình ra trong M-files. Các lệnh được nhập sau dấu nhắc ‘>>‘ và thực
thi lệnh bằng phím Enter. Để mở chương trình soạn thảo trong MATLAB, gõ lệnh:
>>edit


BÀI 1: CƠ SỞ VỀ MATLAB


5

Sau khi nhập vào đoạn chương trình và lưu chương trình bằng cách nhấn Ctrl+S hay
nhấn vào biểu tượng Save


.

Cửa sổ Command History:

Các dòng đã nhập trong Command window (các dòng này có thể là dòng nhập biến,
có thể là dòng lệnh) được giữ lại trong cửa sổ Command History và cửa sổ này cho phép
ta sử dụng lại những lệnh đó bằng cách nhấp đúp chuột lên các lệnh hay biến đó


Cửa sổ Workspace:

Là cửa sổ thể hiện tên các biến bạn sử dụng cùng với kích thước vùng nhớ (số bytes),
kiểu dữ liệu (lớp), các biến được giải phóng sau mỗi lần tắt chương trình. Cửa sổ
Workspace cho phép thay đổi giá trị của biến bằng cách nhấn phím chuột phải lên các
biến và chọn Edit.


Nút Start:



Cửa sổ Edit:


Là cửa sổ dùng để soạn thảo chương trình ứng dụng, được khởi động bằng lệnh edit
trong Command Window. Chương trình soạn thảo trong cửa sổ edit có 2 dạng:
+ Dạng Script file : tập hợp các câu lệnh viết dưới dạng liệt kê, không có biến dữ liệu
vào và biến ra.
+ Dạng function: có biến dữ liệu vào và biến ra.


6

BÀI 1: CƠ SỞ VỀ MATLAB

1.1 MA TRẬN
Bài 1.1. Cho ma trận A = [2 7 9 7; 3 1 5 6; 8 1 2 5], sinh viên giải thích kết quả của
các lệnh sau:
a. A'
b. A(:,[1 4])
c. A([2 3],[3 1])
d. reshape(A,2,6)
e. A(:)
f. [A;A(end,:)]
g. A(1:3,:)
h. [A ; A(1:2,:)]
i. sum(A)
j. sum(A')
k. [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]
Bài 1.2. Cho ma trận A = [2 4 1; 6 7 2; 3 5 9], sinh viên dùng các lệnh cần thiết để:
a. Lấy dòng đầu tiên của ma trận A.
b. Tạo ma trận B bằng 2 dòng cuối cùng của A.
c. Tính tổng các phần tử trên các cột của A. (gợi ý: tính tổng các phần tử trên cột 1:
sum(A(:,1))).

d. Tính tổng các phần tử trên các dòng của A.
Bài 1.3. Giải hệ phương trình sau:
2x1 + 4x2 + 6x3 – 2x4 = 0
x1 + 2x2 + x3 + 2x4 = 1
2x2 + 4x3 + 2x4 = 2
3x1 - x2 + 10x4 = 10.
Gợi ý: A.X = B → X = inv(A).B
Bài 1.4. Chứng tỏ rằng (A+B)C=AC+BC, với:


BÀI 1: CƠ SỞ VỀ MATLAB

7

1.2 VECTOR
Vector thực chất là ma trận có kích thước n x 1 hay 1 x n, nên ta có thể tạo ra vector
như cách tạo ra ma trận. Ngoài ra, có thể dùng một số cách sau:
>>x=0:0.1:1
>>y=linspace(1, 10, 20) % vector 20 phan tu cach deu nhau tu 1
den 10
>>z=rand(10,1) ; tạo 10 số ngẫu nhiên phân bố đều
Bài 1.5. Cho vector x = [3 1 5 7 9 2 6], giải thích kết quả của các lệnh sau:

a. x(3)
b. x(1:7)
c. x(1:end)
d. x(1:end-1)
e. x(6:-2:1)
f. x([1 6 2 1 1])
g. sum(x)

Bài 1.6. Tạo một vector x có 100 phần tử, sao cho: x(n) = (-1)n+1/(2n+1) với n = 0
– 99.

1.3 ĐA THỨC
Các đa thức trong MATLAB được mô tả bằng các vector hàng với các phần tử của
vector chính là các hệ số của đa thức, xếp theo thứ tự số mũ giảm dần. Ví dụ, đa thức m
= s4-s3+4s2-5s-1 được biểu diễn là:
>>m=[1 -1 4 -5 -1]
Để xác định giá trị của đa thức, ta dùng hàm polyval. Ví dụ, xác định giá trị của đa
thức tại điểm s=2:


8

BÀI 1: CƠ SỞ VỀ MATLAB

>>polyval(m,2)
Để xác định nghiệm của đa thức, ta dùng hàm roots. Ví dụ:
>>roots(m)
Bài 1.7. Cho phương trình ax2+bx+c=0, giải phương trình dùng hàm roots.
>>m=[a b c];
>>x=roots(m)
Thay đổi các giá trị khác nhau của a, b và c tương ứng trong 2 cách giải trên.
Bài 1.8. Giải phương trình x3- 2x2+4x+5=0. Kiểm chứng kết quả thu được bằng hàm
polyval. Sinh viên có nhận xét gì về kết quả kiểm chứng.
Bài 1.9. Lặp lại bài 1.8 cho phương trình x7-2=0.

1.4 ĐỒ HOẠ
Bài 1.10. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
>>t = [0:pi/100:2*pi];

>>y = sin(t);
>>plot(t,y); % Vẽ hình sin từ 0->2
>>grid on
Để xác định màu và kích thước đường vẽ, ta dùng các tham số sau:
LineWidth

: độ rộng đường thẳng, tính bằng số điểm

MarkerEdgeColor

: màu của các cạnh của khối đánh dấu

MarkerFaceColor

: màu của khối đánh dấu

MarkerSize

: kích thước của khối đánh dấu

Màu được xác định bằng các tham số:
r: red

m magenta

b: blue

k: black

g: green


y: yellow

c: cyan

w: white

Các dạng đường thẳng xác định bằng:
- đường liền

-- đường đứt nét

: đường chấm chấm

-. đường chấm gạch

Các dạng điểm đánh dấu xác định bằng:


BÀI 1: CƠ SỞ VỀ MATLAB

+ dấu cộng

. điểm

o vòng tròn

s hình vuông

d hạt kim cương


x chữ thập

9

* dấu sao

v tam giác hướng xuống

^ tam giác hướng lên

< tam giác sang trái

> tam giác sang phải

h lục giác

p ngũ giác

Bài 1.11. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
>>x = -pi : pi/10 : pi;
>>y = tan(sin(x)) - sin(tan(x));
>>plot(x,y,ʹ‐‐rs’,ʹLineWidthʹ,2,ʹMarkerEdgeColorʹ,ʹkʹ,...
ʹMarkerFaceColorʹ,ʹgʹ,ʹMarkerSizeʹ,10)
Nếu x, y, z là 3 vector có cùng độ dài thì plot3 sẽ vẽ đường cong 3D.
Bài 1.12. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
>>t = 0:pi/50:10*pi;
>>plot3(sin(t),cos(t),t)
>>axis square;
>>grid on

Dùng hàm subplot để vẽ nhiều trục toạ độ.
Bài 1.13. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
>>subplot(2,3,5) %2,3: xác định có 2 hàng, 3 cột
% 5: chọn trục thứ 5 (đếm từ trái sang phải, trên xuống dưới)
>>x=linspace(0,2*pi);
>>y1=sin(x);
>>y2=cos(x)
>>y3=2*exp(-x).*sin(x);
>>x1=linspace(-2*pi,2*pi);
>>y4=sinc(x1);
>>subplot(221);
>>plot(x,y1);
>>title(‘Ham y = sinx’);
>>subplot(222);


10

BÀI 1: CƠ SỞ VỀ MATLAB

>>plot(x,y2);
>>title(‘Ham y = cosx’);
>>subplot(223);
>>plot(x,y3);
>>title(‘Ham y = 2e^{-x}sinx’);
>>subplot(224);
>>plot(x1,y4);
>>title(‘Ham

y


=

$${sin

\pi

x

\over

\pi

x}$$','interpreter','latex');
MATLAB cung cấp các lệnh ghi nhãn lên đồ hoạ gồm:
title thêm nhãn vào đồ hoạ.
xlabel thêm nhãn vào trục x.
ylabel thêm nhãn vào trục y.
zlabel thêm nhãn vào trục z.
legend thêm chú giải vào đồ thị.
text hiển thị chuỗi văn bản ở vị trí nhất định.
gtext đặt văn bản lên đồ hoạ nhờ chuột.
Bài 1.14. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
>>x = -pi:.1:pi;
>>y = sin(x);
>>plot(x,y)
>>xlabel(ʹt = 0 to 2\piʹ,ʹFontsizeʹ,16)
>>ylabel(ʹsin(t)ʹ,ʹFontsizeʹ,16)
>>title(ʹ\it{Gia tri cua sin tu zero đến 2 pi}ʹ,ʹFontsizeʹ,16)
Ta có thể thêm văn bản vào bất kỳ chỗ nào trên hình vẽ nhờ hàm text.

>>text(3*pi/4,sin(3*pi/4),ʹ\leftarrowsin(t)=0.707ʹ,ʹFontSizeʹ,1
2)
Ta có thể sử dụng đối tượng văn bản để ghi chú các trục ở vị trí bất kỳ. MATLAB định
vị văn bản theo đơn vị dữ liệu trên trục. Ví dụ để vẽ hàm y = Aet với A = 0.25, t = 0
đến 900 và = 0.005:


BÀI 1: CƠ SỞ VỀ MATLAB

11

>>t = 0:900;
>>plot(t,0.25*exp(‐0.005*t))
Để thêm ghi chú tại điểm t = 300, ta viết:
>>text(300,.25*exp(‐.005*300),...
’\bullet\leftarrow\fontname{times}0.25{\ite}^(‐0.005{\itt}}
at,...
{\itt}=300’,ʹFontSize’,14)
Tham số HorizontalAlignment và VerticalAlignment định vị văn bản so với các toạ độ
x, y, z đã cho.
Để thêm các công thức toán học, ta dùng dạng LaTeX.
Bài 1.15. Thực hiện ghi các công thức toán học sau:

⃗ =
𝐸

𝑄𝑧
4𝜋𝜀√(𝑎2 + 𝑧2 )3

N −1


X (k ) =  x(n)e − j 2 kn / N
n =0




−∞

𝑒 −𝑥 + 𝑒 𝑥
√2𝑥 + 1

sin(𝜔(𝑥 − 𝜏)) 𝑑𝑥



∑ 𝑧 −𝑛 𝑥(𝑛)
𝑛=−1

𝑥
𝑦̈ = 𝑥 [𝑥 2
𝑥3

𝑥2
𝑥3
𝑥

𝑥3
𝑥]
𝑥2


⃗⃗𝑖𝑧


12

BÀI 1: CƠ SỞ VỀ MATLAB

Bài 1.16. Thực hiện đoạn chương trình sau và ghi nhận kết quả.
Hàm mesh và surf tạo ra mặt 3D từ ma trận dữ liệu. Gọi ma trận dữ liệu là z mà mỗi
phần tử của nó z(i,j) xác định tung độ của mặt thì mesh(z) tạo ra một lưới có màu thể
hiện mặt z còn surf(z) tạo ra một mặt có màu z.
Bước thứ nhất để thể hiện hàm 2 biến z=f(x,y) là tạo ma trận x và y chứa các toạ độ
trong miền xác định của hàm. Hàm meshgrid sẽ biến đổi vùng xác định bởi 2 vector x và
y thành ma trận x và y. Sau đó ta dùng ma trận này để đánh giá hàm.
>>[x,y] = meshgrid(-8:.5:8);
>>r = sqrt(x.^2 + y.^2);
Ma trận r chứa khoảng cách từ tâm của ma trận. Tiếp theo ta dùng hàm mesh để vẽ
hàm.
>>z = sin(r)./r;
>>mesh(z)
Bài 1.17. Vẽ đồ thị hàm số y1=sinx.cos2x và hàm số y2=sinx2 trong [0-2], trên
cùng hệ trục tọa độ, ta lần lượt thực hiện như sau:
>>x=0:0.01:2*pi;
>>y1=sin(x).*cos(2*x); %nhan tuong ung tung phan tu
>>plot(x,y1)
>>grid on %hien thi luoi
Sau khi thu được đồ thị hàm y1, để vẽ y2 trên cùng đồ thị, ta thực hiện:
>>hold on %giu hinh, mac nhien la hold off
>>y2=sin(x.^2); %luy thua tung phan tu

>>plot(x,y2,’k’) %duong ve co mau den
>>axis([0 4*pi –1.25 1.25]) %dinh lai toa do hien thi
Ta có thể đặt nhãn cho các trục cũng như tiêu đề cho đồ thị:
>>xlabel(‘Time’)
>>ylabel(‘Amplitude’)
>>title(‘y1=sinx.cos2x and y2=sin(x^2)’)
>>legend(‘sinx.cos2x’,’sinx^2’)
Bài 1.18. Thực hiện như bài 1.17 nhưng dùng các hàm semilogx, semilogy, loglog
thay thế cho plot.


BÀI 1: CƠ SỞ VỀ MATLAB

Bài 1.19.Thực hiện như bài 1.17 cho hàm số y =

13

𝑒 −𝑥
2𝑒 −𝑥 +2

Bài 1.20. Vẽ hàm số r = sin (5) trong toạ độ cực:
>>theta=0:0.05:2*pi;
>>r=sin(5*theta);
>>polar(theta,r)
Bài 1.21. Vẽ hàm số r = 2sin() + 3cos()
Bài 1.22. Vẽ hàm số 2x2 + y2 = 10 ở dạng toạ độ cực.
Gợi ý: x = rcos, y = rsin
MATLAB cung cấp nhiều hàm vẽ đồ thị 3D, chẳng hạn: plot3 - dùng để vẽ các đường
trong không gian 3 chiều; mesh và surf - dùng để vẽ vật thể 3D.
Bài 1.23.Vẽ đồ thị 3D bằng hàm plot3:

>>t=0:pi/50:10*pi;
>>x=sin(t);
>>y=cos(t);
>>z=t;
>>subplot(121), plot3(x,y,z)
>>grid on
>>subplot(122), plot3(x,y,t.^2)
>> grid on
Bài 1.24. Vẽ mặt paraboloid z=x2+y2 trong không gian 3 chiều:
>>close all
>>t=-5:0.1:5;
>> [x,y]=meshgrid(t); %dinh luoi ve
>>z=x.^2+y.^2;
>> subplot(2,2,1), mesh(z)
>> title('mesh(z)')
>> subplot(2,2,2), meshc(z)
>> title('meshc(z)')
>> subplot(2,2,3), meshz(z)


14

BÀI 1: CƠ SỞ VỀ MATLAB

>> title('meshz(z)')
>> subplot(2,2,4), waterfall(z)
>> title('waterfall(z)')
Bài 1.25. Vẽ mặt 𝑧 =

𝑠𝑖𝑛(√𝑥 2 +𝑦 2 )

2(√𝑥 2 +𝑦 2 )

dùng hàm surf và mesh.

1.5 SCRIPT - FUNCTION
Bài 1.26. Ta xét ví dụ tạo ra các số Fibonacci nhỏ hơn 1000.
Từ cửa sổ lệnh gõ lệnh:
>>edit
Cửa sổ Editor mở ra, nhập vào đoạn chương trình sau:
f = [1 1];
i = 1;
while(f(i)+f(i+1))<1000
f(i + 2)= f(i) +f(i+1);
i = i + 1;
end
plot(f)
Nhấn Save để lưu đoạn mã lệnh này và đặt tên là fibo.m. Đây chính là một script file.
Để thực hiện các mã chứa trong file fibo.m từ cửa sổ lệnh ta nhập:
>>fibo
Và nhấn enter. Kết quả MATLAB sẽ vẽ ra đồ thị của chuỗi Fibonacci.
Bài 1.27. Nhập đoạn chương trình sau trên cửa sổ Editor:
function y = tb(x)
%Tinh tri trung binh cua cac phan tu
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;



BÀI 1: CƠ SỞ VỀ MATLAB

15

Lưu lại với tên tb.m.
Từ cửa sổ MATLAB gõ lệnh:
>>z = 1:99;
>>tb(z)
Bài 1.28. Xây dựng hàm gptb2 để giải phương trình bậc hai ax2+bx+c=0. Nội dung
hàm như sau:
function [x1,x2]=gptb2(a,b,c)
% Giai phuong trinh bac hai ax^2+bx+c=0
% [x1,x2]=gptb2(a,b,c)
% Trong do: x1,x2 la nghiem
% a, b, c la 3 he so cua phuong trinh
if nargin<3
error('Error! Nhap 3 he so cua phuong trinh')
elseif a==0
x1=-c/b;
x2=[];
else
delta = b^2 - 4*a*c;
x1 = (-b+sqrt(delta))/(2*a);
x2 = (-b-sqrt(delta))/(2*a);
end
Lưu tên file là gptb2.m và kiểm tra kết quả:
>>help gptb2
>>[x1,x2]=gptb2(1,6,-7)
>>[x1,x2]=gptb2(2,7,14)
>>[x1,x2]=gptb2(0,4,3)

>>[x1,x2]=gptb2(1,6)
Bài 1.29. Xây dựng hàm vdcongdb(a,m,method) để vẽ một số đường cong trong
hệ tọa độ cực, với a là bán kính và m là số đường cong vẽ trên cùng trục tọa độ. Trường
hợp này hàm không trả về giá trị.


16

BÀI 1: CƠ SỞ VỀ MATLAB

Tuỳ theo giá trị của tham số ‘method’ mà ta vẽ đồ thị tương ứng:
Nếu method = ’Becnulli’: Vẽ đường Becnulli: 𝑟 = 𝑎√|2𝑐𝑜𝑠2𝜃 |
Nếu method = ’Astroit’: Vẽ đường Astroit: 𝑟 = 𝑎√|1 −

𝑠𝑖𝑛3𝜃
4

|

Nếu method = ‘Xoanoc’: Vẽ đường xoắn ốc: r = cosθ +1
Nội dung hàm như sau:
function vdcongdb(a,m,method)
%
%
%
%
%
%
%


Ve duong cong trong toa do cuc: vdcongdb(a,m,method)
method = 'Becnulli' - Ve duong Lemniscat Becnulli:
r=a*sqrt(abs(2*cos(2*theta)))
'Astroit' - Ve duong Astroit:
r=a*sqrt(abs(1-sin(3*theta)/4))
'Xoanoc' - Ve duong xoan oc:
r=a*cos(theta)+1

% Voi: a-ban kinh; m-so duong cong ve tren cung he truc
if nargin<3
error('Vui long nhap du 3 thong so cua ham')
else
theta=0:0.01:2*pi; method=upper(method);
switch method
case 'BECNULLI'
r=a*sqrt(abs(2*cos(2*theta)));
case 'ASTROIT'
r=a*sqrt(abs(1-sin(3*theta)/4));
case 'XOANOC'
r=a*cos(theta)+1;
otherwise
error('Chon: ''Becnuli'', ''Astroit'' hoac ''Xoanoc''')
end % end of switch
% ve do thi
close all; figure('Color','w');
for k=1:m
hold on


BÀI 1: CƠ SỞ VỀ MATLAB


17

r1=r*k;
mau=[rand(1,1) rand(1,1) rand(1,1)];
h=polar(theta,r1);
set(h,'color',mau,'LineWidth',2);
axis equal;
end % end of for
hold off;
axis off
end % end of if
Kiểm tra lại hoạt động của hàm, ví dụ:
>>help vdcongdb
>>vdcongdb(1,5,’Becnulli’)
>>vdcongdb(1,5,’ Astroit’)
>>vdcongdb(1,5,’Xoanoc’)
>> vdcongdb(1,5,’saikieu’)
>> vdcongdb(5,’becnulli’)
Bài 1.30. Xây dựng hàm dudoan() để dự đoán kết quả sau mỗi lần tung một xúc
xắc đồng nhất, 6 mặt. Nội dung hàm như sau:
function dudoan()
% Du doan ket qua sau moi lan tung ngau nhien mot xuc xac 6 mat
% Chuong trinh lap lai cho den khi nguoi su dung khong doan tiep
tiep = 'y'; sai=0; dung=0;
disp('Chao mung ban den voi chuong trinh du doan xuc xac!')
while(lower(tiep)=='y')
doan=input('Moi ban du doan ket qua (1-6):');
kqua=tungxx;
if (doan ~= kqua)

disp('Xin loi, ban da doan sai!')
sai=sai+1;
else


18

BÀI 1: CƠ SỞ VỀ MATLAB

disp('Xin chuc mung!')
dung=dung+1;
end
tiep=input('Ban muon choi tiep(''y''/''n''):');
end
disp(['Dung ' num2str(dung) ' trong tong so ' num2str(sai+dung)
' lan doan'])
% subfunction -------------function mat = tungxx()
mat=floor(6*rand(1,1))+1;
% end
Bài 1.31. Viết function xuất ra màn hình bảng cửu chương.
function cuuchuong(n)
% n = 1: xuất tất cả từ 2 -> 9
% n = 2 -> 9: xuất bản cửu chương tương ứng
% n khác: báo lỗi
Bài 1.32. Viết function giaimach(E1,E2,J,R1,R2,C,R3) xuất ra công suất trên E1,
E2, J; dòng điện trên R3.
Viết script md1 nhập các giá trị E1, E2, J, R1, R2, C, R3; dùng function giaimach để
tính và xuất ra các giá trị công suất trên E1, E2, J; dòng điện trên R3.

J


C

A
R1

B

R2
R3
E2
E1


BÀI 2: GUI (GRAPHICAL USER INTERFACE)

19

BÀI 2: GUI (GRAPHICAL USER
INTERFACE)
Sau khi học xong bài này, người học có thể:


Dùng GUI để thiết kế giao diện.



Viết chương trình cho các nút lệnh.

Bài 2.1. Khởi động cửa sổ tạo GUI bằng cách chọn Start > MatLab > GUIDE (GUI

Builder)

Hay gõ lệnh:

>>guide
Cửa sổ GUIDE Quick Start xuất hiện, ta chọn Blank GUI.


20

BÀI 2: GUI (GRAPHICAL USER INTERFACE)

Thiết kế giao diện sau:

Đối tượng

Thông số

Nút nhấn

String: Convert
Tag: pushbuttonConvert

3 Radio Button

String: Celcius, Rankine, Kelvin
Value: 1.0, 0.0, 0.0
Tag:
radiobuttonC,
radiobuttonK


radiobuttonR,

Static text

String: Fahrenheit degree

Static text

String: Celcius degree
Tag: text2


BÀI 2: GUI (GRAPHICAL USER INTERFACE)

Đối tượng

Thông số

Slider

Max: 9032
Min: -459.4
SliderStep: [0.001 0.1]
Tag: SliderDoF

Edit text

String: 32
Tag: editDoF


Edit text

String: 0
Tag: editKQ

Nhấn Save để lưu giao diện, cửa sổ Editor cho giao diện sẽ mở ra.
Mã lệnh cho các đối tượng:
function pushbuttonConvert_Callback(hObject, eventdata, handles)
doF = str2num(get(handles.editDoF,'String'));
if get(handles.radiobuttonC,'Value') == 1
set(handles.editKQ,'String',num2str((doF-32)*5/9));
elseif get(handles.radiobuttonR,'Value') == 1
set(handles.editKQ,'String',doF+459.7);
else
set(handles.editKQ,'String',(doF-32)*5/9+273.15);
end
function radiobuttonC_Callback(hObject, eventdata, handles)
set(handles.radiobuttonK,'Value',0);
set(handles.radiobuttonR,'Value',0);
set(handles.text2,'String','Celcius degree');
function radiobuttonR_Callback(hObject, eventdata, handles)
set(handles.radiobuttonC,'Value',0);
set(handles.radiobuttonK,'Value',0);
set(handles.text2,'String','Rankine degree');
function radiobuttonK_Callback(hObject, eventdata, handles)
set(handles.radiobuttonR,'Value',0);

21



22

BÀI 2: GUI (GRAPHICAL USER INTERFACE)

set(handles.radiobuttonC,'Value',0);
set(handles.text2,'String','Kelvin degree');
Kiểm tra kết quả.
Bài 2.2. Thiết kế cửa sổ như hình vẽ:

Viết chương trình theo yêu cầu: khi nhấn nút Draw, vẽ hình y = xn nếu chọn chế
độ vẽ 2D và vẽ hình z = xn + yn nếu chọn chế độ vẽ 3D (giá trị n chỉ chấp nhận nếu 2 
n  10).
Bài 2.3. Thiết kế cửa sổ như hình vẽ:


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×