Nhập, xuất dữ liệu

Một phần của tài liệu Hướng dẫn sử dụng MATLAB simulink và ứng dụng điều khiển các hệ thống tự động (Trang 29 - 32)

1. Các lệnh nhập dữ liệu 1.1. Nhập từ bàn phím: Lệnh input Cú pháp: <tên biến>=input('lời nhắc') <tên biến>=input('lời nhắc', 's') Mô tả:

<tên biến>=input('lời nhắc') Sẽ hiển thị lời nhắc và chờ người dùng nhập dữ liệu, các dữ liệu này sẽ được gán cho <tên biến>.

<tên biến>=Input('lời nhắc', 's') thường dùng khi nhập chuỗi: nếu dùng cú pháp thứ nhất để nhập chuỗi thì ta cần đặt chuỗi trong dấu ' ', còn ở cú pháp 2 ta có thể nhập trực tiếp nội dung của chuỗi.

Chú ý:

Nếu ta ấn enter khi xuất hiện lời nhắc, Matlab sẽ trả kết quả là ma trận rỗng. 1.2. Nhập từ hộp thoại: Lệnh inputdlg Cú pháp: answer = inputdlg(prompt) answer = inputdlg(prompt,title) answer = inputdlg(prompt,title,lineNo) answer = inputdlg(prompt,title,lineNo,defAns) Mơ tả:

Prompt: là các dịng nhắc trên các trường dữ liệu, được nhập ở dạng mảng khối các chuỗi lời nhắc

Title: là tiêu đề của hộp thoại, nhập vào ở dạng chuỗi

LineNo: là số nguyên quy định số dòng cho mỗi trường nhập dữ liệu

DefAns: là một mảng khối các chuỗi gán giá trị mặc định

Các dữ liệu nhập vào được gán cho answer dưới dạng mảng khối các chuỗi

Ví dụ prompt = {'Nhập số hàng ma trận:','Nhập số cột ma trận'}; title = 'Hộp thoại nhập ma trận'; lines= 1; def = {'20','20'}; answer = inputdlg(prompt,title,lines,def); Sẽ đưa ra hộp thoại:

Nếu nhập ở hai hộp các giá trị 40 và 30, sau đó nháy OK, ta nhận được:

answer={'20' '30'} Chú ý:

Kết quả nhập vào được gán cho biến ở dạng mảng khối các chuỗi, chính vì vậy để có thể sử dụng được các giá trị này ta phải dùng hàm char để chuyển đổi về mảng thơng thường, sau đó dùng các hàm sscanf hoặc eval để chuyển dữ liệu về dạng số.

1.3. Nhập dữ liệu từ tệp: Lệnh fread

Cú pháp:

[A,count] = fread(fid,size,precision Dữ liệu đọc được sẽ ghi vào mảng A, count sẽ ghi lại số phần tử được đọc Fid là chỉ số của tệp được mở lấy ra từ lệnh fopen

Size: định dạng số phần tử được lấy ra. Có các loại định dạng sau:

- n: Đọc n phần tử và ghi ra ở dạng véc tơ cột. - inf: Đọc đến cuối mảng, các phần tử đưa vào ma trận cột.

- [m,n]:Đọc đủ số phần tử để điền vào ma trận m x n, các phần tử điền vào theo trật tự các cột, nếu không đủ số phần tử điền, máy thêm vào phần tử 0.

Preciscion: Dạng của phần tử 'char' Character; 8 bits 'schar' Signed character; 8 bits 'uchar' bitsUnsigned character; 8 'int8' Integer; 8 bits 'int16' Integer; 16 bits 'int32' Integer; 32 bits 'int64' Integer; 64 bits 'uint8' Unsigned integer; 8 bits 'uint16' bitsUnsigned integer; 16 'uint32' bitsUnsigned integer; 32

1.4. Lệnh fopen:

Mở tệp để ghi hoặc đọc dữ liệu

Cú pháp: fid = fopen('filename','permission') Permission: quy định chế độ mở, có thể lấy các giá trị:

'r': mở ra để đọc

'w': mở ra để ghi, nếu tệp đã có, nó sẽ xố tồn bộ nội dung tệp và ghi lại

'a': mở ra để ghi thêm

Filename: là tên của tệp sẽ mở được đặt trong dấu ' '

Kết quả sẽ trả ra chỉ số của tệp được mở (con trỏ tham chiếu đến tệp) và gán cho biến fid.

1.5 Lệnh đóng tệp, fclose

Cú pháp:

status = fclose(fid), đóng tệp chỉ định status = fclose('all'), đóng tất cả các tệp đang mở 1.6 Lệnh fscanf: Nhập dữ liệu từ tệp định dạng mã ascci Cú pháp: A = fscanf(fid,format) [A,count] = fscanf(fid,format,size) ở cú pháp thứ nhất, fscanf sẽ đọc dữ liệu từ tệp có con trỏ fid theo định dạng quy định bằng chuỗi format.

Số phần tử được đọc thành công sẽ được trả cho biến count

Ví dụ:

Ta có tệp dữ liệu có tên là 'd:\data\dl.dat' có các số liệu sau:

1.345 4.123 4.567 2.456 2.675 6.876 4.576 3.456

Đoạn chương trình sau sẽ đọc dữ liệu từ tệp xếp thành ma trận (4,2) và gán cho biến M

f=fopen('d:\data\dl.dat','r'); M=fscanf(f,'%f',[4,2]); fclose(f);

2. Các lệnh xuất dữ liệu

2.1. lệnh disp: Hiển thị văn bản hoặc mảng

cú pháp: disp(A) Mô tả

disp(X) Hiển thị giá trị các mảng mà không đưa ra tên mảng, nếu x chứa chuỗi, chuỗi sẽ được in ra màn hình.

2.2. Lệnh fprintf: Ghi lại dữ liệu

count = fprintf(fid,format,A,...) fprintf(format,A,...)

Mô tả:

count = fprintf(fid,format,A,...) định dạng các

dữ liệu ở phần thực của ma trận A dưới sự điều khiển của chuỗi định dạng 'format' và ghi vào tệp tham chiếu bằng con trỏ 'fid'. Hàm fprintf trả số lượng byte được ghi ra.

fid là chỉ số của tệp được mở ra để ghi dữ liệu,

nhận được từ lệnh fopen. Nếu bỏ qua fid, kết quả sẽ in ra màn hình.

format là chuỗi quy định định dạng sẽ xuất ra (xem lệnh sprintf)

2.3. Lệnh fwrite: Ghi dữ liệu ra tệp ở dạng mã

nhị phân.

Cú pháp:

count = fwrite(fid,A,precision)

Mô tả:

count = fwrite(fid,A,precision) ghi các phần tử của ma trận A vào tệp tham chiếu bởi 'fid'. Chuyển đổi các giá trị của MATLAB với độ chính xác được quy định trong 'precision'. Dữ liệu được ghi theo trật tự cột, count sẽ đếm số phần tử được ghi thành công vào tệp. đối số 'fid' là con trỏ tệp nhận được từ lệnh fopen.

III. Các lệnh phân nhánh 1. Lệnh if 1.1 Cú pháp: Lệnh If Cú pháp 1: if Biểu thức lơgíc Các biểu thức tính; end Cú pháp 2: if Biểu thức lơgíc Các biểu thức tính 1 else Các biểu thức tính 2 end Cú pháp 3: if Biểu thức lơgíc 1 Các biểu thức tính 1

elseif Biểu thức lơgíc 2

Các biểu thức tính 2

else

Các biểu thức tính 3

end

Trong các cú pháp đưa ra ở trên:

- Các biểu thức lơ gíc viết theo quy tắc được trình bày ở dưới đây

- Các biểu thức tính chứa các dịng lệnh của Matlab

Trong cú pháp 1: Máy sẽ kiểm tra biểu thức logic: nếu biểu thức lôgic đúng, máy sẽ thực hiện các lệnh trong if (nằm giữa if và end), cịn nếu biểu thức lơ gíc sai máy sẽ bỏ qua các câu lệnh trong if và thực hiện các câu lệnh kế tiếp câu lệnh if

Trong cú pháp 2: nếu biểu thức lôgic đúng máy sẽ thực hiện các câu lệnh trong Các biểu thức tính 1, cịn nếu biểu thức lơgic sai máy sẽ thực hiện các câu lệnh Các biểu thức tính 2.

Trong cú pháp 3: Nếu biểu thức lơgíc 1 đúng, máy sẽ thực hiện Các biểu thức tính 1. Nếu biểu thức lơgíc 1 sai, máy sẽ kiểm tra biểu thức lơgíc 2: nếu biểu thức lơgic này đúng, máy sẽ thực hiện các biểu thức tính 2, cịn các trường hợp khác máy sẽ thực hiện các biểu thức tính 3.

1.2 Các tốn tử logic

Mat lab cho phép sử dụng các tốn tử lơgic sau: S T T Toán tử ý nghĩa thí dụ

1 = = kiểm tra liệu hai biểu thức có bằng nhau

khơng A=B

2 > Lớn hơn A>B

3 < Nhỏ hơn A<B

4 <= Nhỏ hơn hoặc bằng A<=B 5 >= Lớn hơn hoặc bằng A>=B

7 & Và lôgic A&B

8 | Hoặc lôgic A|B

9 Not Phủ định Not(A)

1.3 Các hàm logíc

Kiểm tra liệu mảng X có rỗng khơng, cho giá trị đúng (1) khi X rỗng nguợc lại cho kết quả sai (0)

b. Hàm isequal(a,b...)

k = isequal(A,B,...) sẽ trả giá trị đúng lôgic(1), nếu các mảng đối số có cùng dạng, cùng kích cỡ và có cùng nội dung. Hàm này thường dùng khi so sánh hai hay nhiều mảng, nó sẽ khơng gây lỗi khi 2 mảng có kích thước khác nhau.

c. Hàm ischar(x)

Cho kết quả đúng nếu x là dữ liệu dạng chuỗi.

d. Các hàm strcmp(s1,s2), strcmp(s1, s2, n)

Hàm strcmp(s1,s2) so sánh hai chuỗi s1, s2. Nếu hai chuỗi giống nhau sẽ trả kết quả đúng Hàm strcmp(s1,s2,n) cho kết quả đúng nếu n ký tự đầu tiên của hai chuỗi như nhau. Chú ý:

Trong trường hợp đối số trong các hàm lôgic là ma trận, máy sẽ thử từng cặp phần tử trong ma trận, nếu đúng trả giá trị 1, nếu sai trả giá trị 0 và kết quả nhận được là ma trận các giá trị 1 và 0. Để so sánh được hai ma trận phải có cùng kích thước.

2. Lệnh switch

Cú pháp:

switch Biểu thức switch case Biểu thức case 1

Các biểu thức tính 1

case Biểu thức case 2

Các biểu thức tính 2 ...

otherwise

Các biểu thức tính khác

end

Khi lệnh switch được gọi, nó sẽ tính tốn giá trị biểu thức switch Sau đó giá trị của biểu thức này sẽ được so với mỗi một biểu thức case theo trình tự được ghi trong câu lệnh, nếu 2 phép so sánh đưa ra kết quả đúng, nhóm các câu lệnh tương ứng sẽ được thực hiện, sau đó thốt khỏi lệnh và thực hiện các câu lệnh sau switch.

Nếu tất cả các biểu thức case đều không phù hợp với giá trị của biểu thức switch. Nhóm lệnh dưới otherwise sẽ được thực hiện.

Một phần của tài liệu Hướng dẫn sử dụng MATLAB simulink và ứng dụng điều khiển các hệ thống tự động (Trang 29 - 32)

Tải bản đầy đủ (PDF)

(66 trang)