Các loại dữ liệu dùng trong Matlab

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 25 - 29)

1. Dữ liệu số:

- Matlab sử dụng các chế độ ghi dữ liệu số thập phân thơng thường.

- Có kiểu ghi dùng chữ cái e để xác định số mũ cơ số 10. Ví dụ: 1.60210e-20 =1.60210*

1020

- Các số được lưu trữ trong bộ nhớ có giới hạn là 16 chữ số sau dấu phẩy và giá trị giới hạn nằm trong khoảng −10308 đến 10308 .

Một số hằng số thường dùng trong Matlab pi = 3.14169265

i,j = các đơn vị của số ảo

esp = độ chính xác tương đối của số thực,

2−52

Inf = Vô cùng lớn NaN = Không phải là số

2. Các phép tính trên số phức2.1 Nhập dữ liệu 2.1 Nhập dữ liệu Số phức được nhập ở dạng Phần thực + phần ảo i Ví dụ: x= 2+3i 2.2 các phép tính thực hiện trên số phức - Phép cộng: Sử dụng toán tử +, - Phép trừ: Sử dụng toán tử -, - Phép nhân: Sử dụng toán tử *, - Phép chia: Sử dụng tốn tử / Ví dụ:

Nếu X= 3 +4i, Y=5+6i, ta sẽ có: X+Y ans =8.0000 +10.0000i X*Y ans =-9.0000 +38.0000i X-Y ans =-2.0000 - 2.0000i X/Y ans =0.6393 + 0.0328i 2.3 Các hàm xử lý số phức a. Hàm real

Lấy ra giá trị phần thực của số phức

Ví dụ: Nếu ta có X=3 +4i, real(X) sẽ cho giá trị 3

b. Hàm imag

Lấy ra phần ảo của số phức Ví dụ: với X lấy giá trị như trên, imag(X) sẽ cho giá trị 4

c. Hàm conj

Tìm số phức liên hợp của số phức đã cho Ví dụ: với X lấy giá trị như trên, conj(X) sẽ cho giá trị 3-4i

3. Dữ liệu dạng chuỗi

3.1. Phép gán và tham chiếu đến dữ liệudạng chuỗi dạng chuỗi

* Phép gán: <tên biến>='chuỗi'

* Tham chiếu đến dữ liệu dạng chuỗi Chuỗi là một véc tơ hàng có số phần tử bằng số chữ cái trong chuỗi để tham chiếu đến từng chữ cái ta chỉ cần gọi phần tử tương ứng của chuỗi

Các ví dụ: nếu gán x='String Mat' Khi gọi x(1), ta nhận được ans = S nếu gọi x(1:6), ta sẽ nhận được ans = String

3.2. Tạo các mảng với phần tử là chuỗi3.2.1 Tạo véc tơ cột các chuỗi: 3.2.1 Tạo véc tơ cột các chuỗi:

* Nhập trực tiếp: nhập theo nguyên tắc giống mảng với các phần tử là số, tuy nhiên yêu cầu các chuỗi có chiều dài như nhau, trong trường hợp các chuỗi có chiều dài khác nhau, ta phải thêm bước trống vào cuối chuỗi.

Ví dụ: x=['first ' 'second' 'third '] x = first second third * Dùng hàm: char Cú pháp: char('chuỗi 1', 'chuỗi 2',....)

Chú ý: hàm char sẽ chèn cả các chuỗi rỗng vào mảng

Ví dụ: x=char('first','second', '', 'third') sẽ cho kết quả là véc tơ cột có 4 phần tử

x = first second

third

Dùng mảng khối:

-Mảng khối được nhập như mảng thông thường, chỉ khác là mảng được bao bằng dấu { }

Các phần tử của mảng khối sẽ là các chuỗi ví dụ:

x={'first' 'second' 'third'} x =

'first' 'second' 'third' Nếu gọi: x(1), ta nhận được ans =

'first'

3.3. Các hàm dùng trên chuỗi

3.3.1 Hàm chuyển đổi từ dữ liệu số sangchuỗi và ngược lại chuỗi và ngược lại

a. Chuyển từ số sang chuỗi: Các hàm int2str, num2str, mat2str

* Hàm int2str: chuyển số nguyên sang chuỗi. Cú pháp: str = int2str(N)

Mô tả:

str = int2str(N) Chuyển số nguyên sang chuỗi với định dạng của số nguyên. N có thể là một số nguyên riêng lẻ hoặc mảng các số nguyên. Các giá trị thực sẽ được làm tròn trước khi chuyển đổi.

Thí dụ:

int2str(2+3) là chuỗi '5'. int2str(3.5) =4 * Hàm num2str

Chuyển đổi từ số thực sang chuỗi Cú pháp

str = num2str(A) str = num2str(A,precision) str = num2str(A,format) Mô tả

Hàm num2str chuyển đổi các số thực sang chuỗi. Hàm này được dùng nhiều khi cần đưa vào đồ thị các nhãn hoặc tiêu đề bằng các giá trị số thực.

str = num2str(a) chuyển đổi mảng A thành chuỗi str với 4 chữ số sau dấu phảy và số mũ nếu cần thiết.

str = num2str(a,precision) chuyển đổi mảng A thành chuỗi str với độ chính xác được quy định bằng 'precision'. đối số precision quy định số chữ số sau dấu phảy, mặc định là 4. str = num2str(A,format) chuyển đổi mảng A sử dụng định dạng quy định bằng 'format'. (xem lệnh fprint).

num2str(pi) là 3.142.

num2str([1/3 3/6]) là 0.33333 0.5 num2str(3/7,5) cho kết quả là: 0.42857 * Hàm mat2str

Cú pháp: str = mat2str(A) str = mat2str(A,n) Mô tả

str = mat2str(A) Chuyển ma trận A thành chuỗi, phù hợp với dữ liệu đầu vào của hàm eval, sử dụng độ chính xác cao nhất.

str = mat2str(A,n) Chuyển đổi ma trận A thành chuỗi với n chữ số sau dấu phảy.

Chú ý: Hàm mat2str chỉ được thực hiện trên các giá trị số, véc tơ hoặc mảng chữ nhật. Thí dụ: Xét ma trận: A = 1 2 3 4 Câu lệnh b = mat2str(A) cho kết quả: b = [1 2 ;3 4 ]

b. Chuyển từ chuỗi sang số, thực hiện các phép tính: hàm eval

Cú pháp: eval('Chuỗi')

[a1,a2,a3,...] = eval('Chuỗi') Mơ tả:

eval('Chuỗi') thực hiện biểu thức được mô tả trong 'chuỗi'. Bạn có thể tạo ra 'chuỗi' bằng cách nối kết các chuỗi con và các biến trong ngoặc vuông.

[a1,a2,a3,...] = eval('Chuỗi') thực thi biểu thức trong 'chuỗi' và đưa ra các kết quả trong các biến đầu ra chỉ định.

Thí dụ:

y=eval('5+6-7'), cho kết quả y =4

Nếu ta có x='5+6-sin(pi)', hàm y=eval(x) sẽ cho kết quả: y =11

eval(['sin(pi/2)' '+' 'cos(pi)']), cho kết quả là 0

c. Hàm sprintf

Cú pháp:

s = sprintf(format,A,...)

Mô tả:

s = sprintf(format,A,...) Định dạng các dữ liệu trong ma trận A, trên cơ sở của chuỗi quy định mẫu định dạng 'format' và trả kết quả cho biến dạng chuỗi s. Câu lệnh sprintf cũng có ý nghĩa tương tự như fprint, điểm khác chỉ ở chỗ câu lệnh fprint thường dùng để xuất dữ liệu ra tệp.

Chuỗi format quy định các ghi chú, căn chỉnh, số chữ số, bề rộng của trường. Nó có thể chứa các dữ liệu số, chữ và các ký tự điều khiển theo cấu trúc sau:

Bảng dưới đây sẽ mô tả các ký tự khơng nhìn thấy được sử dụng trong định dạng của lệnh sprintf. Các ký tự thoát ký tự Mơ tả \b Xố lùi \f Kéo giấy \n Xuống dòng \t lùi vào một bước tab \\ Backslash \'' dấu "

%% dấu %

Các quy định chuyển đổi ký tự

điều

khiển Mô tả %c Ký tự riêng lẻ

%d độngchế độ ghi số thập phân dùng dấu chấm %e ghi bằng số e (sử dụng e)

%E ghi bằng số e (sử dụng E) %f Cho phép quy định số chữ số xuất ra %g

Chế độ ghi ngắn gọn %e, %f, Các chữ số 0 phía sau khơng

được in ra

%G Giống %g, nhưng sử dụng E thay cho e %s Ghi chuỗi ký tự

Các ký tự khác

Các ký tự khác có thể chèn vào mã quy định ở vị trí giữa % và ký tự điều khiển.

Ký tự Mơ tả Thí dụ

Dấu

(-) Left-justifies the converted argument in its field. %-5.2d Dấu

(+) Luôn in dấu (+ hoặc -) trước số xuất ra. %+5.2d Số

(0)

Đưa vào các số 0 thay cho

các khoảng trống. %05.2d Số nguy ên Quy định số lượng chữ số ít nhất được in ra. %6f Số với dấu chấm động) Số với dấu. xác định số lượng chữ số được in sang phải dấu chấm phân cách. %6.2f

Thí dụ Lệnh Kết quả sprintf('%0.5g', (1+sqrt(5))/2) 1.618 sprintf('%0.5g',1/eps) 4.5036e+15 sprintf('%15.5f',1/eps) 4503599627370496.00000 sprintf('%d',round(pi)) 3 sprintf('%s','hello') hello sprintf('The array is %dx%d.',2,3) The array is 2x3 sprintf('\n') Xuống dòng d. Hàm sscanf

Đọc chuỗi theo định dạng quy định, hàm có ý nghĩa như là hàm ngược của sprintf. Cú pháp

A = sscanf(s,format) A = sscanf(s,format,size)

Mô tả

A = sscanf(s,format) Đọc dữ liệu từ chuỗi s, chuyển đổi nó phù hợp với định dạng được quy

định trong format và trả ra kết quả cho ma trận a.

A = sscanf(s,format,size) Đọc số phần tử quy định trong size và chuyển đổi nó phù hợp với định dạng quy định trong format. size có thể lấy các giá trị sau:

n Đọc n phần tử và trả véc tơ cột

inf Đọc đến cuối tệp và trả kết quả ra véc tơ cột.

[m,n] Đọc đủ số phần tử để điền vào ma trân m x n phần tử.

Nếu ma trận A là kết quả chỉ của việc sử dụng các ma trận chuyển đổi, và size không ở dạng [M,N], véc tơ hàng sẽ được trả.

Thí dụ: Các câu lệnh s = '2.7183 3.1416'; A = sscanf(s,'%f')

Tạo ra véc tơ cột có hai phần tử chứa giá trị của pi và e.

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 25 - 29)

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

(66 trang)