Giáo trình mathlab toàn tập - Chương 9

7 18 0
Giáo trình mathlab toàn tập - Chương 9

Đang tải... (xem toàn văn)

Thông tin tài liệu

VĂN Bản Sự tiện ích của MATLAB là xử lý với các con số. Tuy nhiên chúng ta đã nhiều lần đề cập đến thao tác với văn bản (text), nh- khi đa nhãn và tiêu đề vào trong đồ thị. Trong MATLAB biến text đ-ợc dùng đến nh- là xâu kí tự, hoặc đơn giản là các xâu. 9.1 Xâu kí tự Xâu kí tự trong MATLAB là mảng của các giá trị ASCII mà quy -ớc của nó là các kí tự.

55 any(x) all(x) không (False) khác không (True) Trả lại phần tử vector x khác không Trả lại cho cột ma trận x mà có phần tử khác không Trả lại tất phần tử vector x khác không Trả lại cho cột ma trận x mà tất phần tử khác không MATLAB cung cấp nhiều hàm kiểm tra cho tồn giá trị đặc biệt điều kiện trả lại kết giá trị logic Các hµm kiĨm tra isa(X, ‘name’) iscell(X) iscellstr(X) ischar(S) isempty(X) isequal(A, B) isfield(S, ‘name’) isfinite(X) isglobal(X) ishandle(h) ishold isiee isinf(X) isletter(S) islogical(X) ismember(A, B) isnan(X) isnumeric(X) isppc isprime(X) isreal(X) isspace(S) issparse(A) isstruct(S) isstudent isunix isvms True nÕu X cã líp ®èi tợng name True đối số mảng phần tử True đối số mảng phần tử xâu True đối số xâu kí tự True đối số rỗng True A B gièng True nÕu ‘name’lµ mét tr−êng cđa cÊu trúc S True phần tử có hạn True đối số biến toàn cục True đối số điều khiển đối tợng hợp lý True đồ thị giữ trạng thái ON True nÕu m¸y tÝnh thùc hiƯn phÐp sè häc IEEE True phần tử vô True phần tử thuộc bảng chữ True đối số mảng logic True vị trí mà phần tử A B trùng True phần tử không xác định (NaN) True đối số mảng số True cho Macintosh với xử lý PowerPC True phần tử số nguyên tố True đối số phần ảo True phần tử kí tự trắng True đối số ma trận Sparse True đối số mét cÊu tróc True nÕu Student Edition cđa MATLAB True máy tính UNIX True máy tính VMS oOo chơng VĂN Bản Sự tiện ích MATLAB xử lý với số Tuy nhiên đà nhiều lần đề cập đến thao tác với văn (text), nh đa nhÃn tiêu đề vào đồ thị Trong MATLAB biến text đợc dùng đến nh xâu kí tự, đơn giản xâu 9.1 Xâu kí tự Xâu kí tự MATLAB mảng giá trị ASCII mà quy ớc kí tự 56 VÝ dô: >> t = 'How about this character t= How about this character string? >> size(t) ans= 32 >> whos Name Size t 1x32 Grand total is 32 elements using string?' Bytes 64 char 64 bytes Class array Một xâu kí tự, đơn giản dạng văn bản, đợc đặt hai dấu nháy đơn Mỗi kí tự xâu phần tử mảng, với phần tử chiếm hai bytes Muốn xem mà ASCII xâu kí tự, bạn phải dùng phép toán số học xâu, chuyển sang dạng số, dùng hàm double Ví dụ: >> double(t) ans= Columns through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 12 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 >> abs(t) ans= Columns through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 Hàm char chuyển lại thành xâu: >> char(t) ans= How about this character string? Với mảng xâu mảng số với thuộc tính đặc biệt, thao tác tất công cụ thao tác với mảng sẵn có MATLAB Ví dụ: >> u = t(16:24) u= character Địa xâu giống nh mảng phần tử từ 16 ®Õn 24 chøa tõ character >> u = t(24:-1:16) retcarahc 57 Đây từ character đọc ngợc lại >> u = t(16:24)’ u= c h a r a c t e r Dùng toán tử chuyển vị để chuyển từ “character” sang d¹ng ma trËn cét >> v = 'I cant't find the manual!' v= I can't find the manual! Dấu nháy đơn với xâu kí tự biểu tợng hai dấu nháy đơn Chúng ta nối hai xâu nh hai mảng: >> w = [u,v] w= character I can’ t find the manual! Hµm disp cho phép bạn hiển thị xâu kí tự mà tên biến >> disp(v) I can't find the manual Chú ý trạng thái v= bị bỏ đi, điều có ích cho hiển thị lời trợ giúp script file Cũng giống nh ®èi víi ma trËn, x©u kÝ tù cã thĨ cã nhiều hàng, nhng hàng phải có số cột b»ng nhau, ®Ĩ cho sè cét cđa chóng b»ng chóng ta cã thĨ dïng kÝ tù trèng >> v = ['However, this' 'does work! '] v= However, this does work! >> w = ['this'; ' does not'] ??? All rows in the bracketed expression must have the same number of columns >> size(v) ans= 13 58 Ta còng dùng hàm char để tạo mảng xâu từ xâu, tự thêm kí tự trống để tạo mảng đầy đủ >> w = char('this', 'does not') w= this does not >> size(w) ans= 9.2 Chuyển đổi xâu Để bổ xung thêm chuyển đổi xâu mà ASCII nh đà trình bày trên, MATLAB đa số hàm chuyển đổi hữu ích khác, chúng bao gồm dới đây: Các hàm chuyển đổi xâu base2dec bin2dec char dec2base dec2bin dec2hex double fprintf hex2dec hex2num int2str mat2str num2str sprintf sscanf str2num Dựa xâu x chuyển sang hệ mời Từ xâu nhị phân sang hệ mêi Tõ x©u sang ASCII Tõ hƯ mêi sang x©u x Từ số hệ mời sang xâu nhị phân Từ số hệ mời sang xâu số hệ mời sáu Chuyển từ mà ASCII sang xâu Viết dạng văn file hình Chuyển từ xâu gåm c¸c sè hƯ 16 sang c¸c sè hƯ mêi Chuyển từ xâu số hệ 16 sang số dấu phẩy động IEEE Chuyển từ số nguyên sang xâu Chuyển từ ma trận số sang xâu gồm số Chuyển tõ sè sang x©u Chun tõ m· ASCII sang x©u Chuyển từ số sang xâu có điều chỉnh kích thớc Chuyển từ xâu sang số điều chỉnh kích thớc Trong trờng hợp tạo thông báo có chứa số xâu, hàm chuyển đổi giúp làm việc >> rad = 2.5; area = pi*rad^2; >> t = ['A circle of radius ' num2str(rad) 'has an area of ' num2str(area) '.']; >> disp(t) A circle of radius 2.5 has an area of 19.63 hàm num2str đợc dùng để chuyển từ số sang xâu Giống nh int2str chuyển từ số nguyên sang xâu, hai hàm gọi hàm sprintf, giống nh cú pháp C dùng để chuyển số sang xâu 9.3 Các hàm xâu MATLAB đa số hàm xâu, bao gồm hàm danh sách dới đây: 59 Các hàm xâu blanks(n) deblank(s) eval(xâu) eval(try, catch) feval(f, x, y, ) findstr(s1, s2) ischar(s) isletter(s) isspace(s) lasterr lower(s) strcat(s1, s2, ) strcmp(s1, s2) strmatch(s1, s2) strncmp(s1, s2, n) strrep(s1, s2) strtok(s) strvcat(s1, s2, ) upper(s) Trả lại xâu gồm kí tự trống hay dấu cách Trả lại vệt trống từ xâu Ước lợng xâu nh lệnh MATLAB Ước lợng xâu bắt lỗi Hàm evaluate đa xâu Tìm kiếm xâu xâu khác True đa vào xâu True vị trí kí tự Alphabet tồn True vị trí kí tự trống Xâu lỗi cuối MATLAB đa Xâu với chữ thờng Nối xâu thành hàng True xâu giống Tìm kiếm khả giống xâu True n kí tự đầu giống Thay xâu xâu khác Tìm kiếm dấu hiệu cho xâu Nối xâu thành cột Chuyển thành chữ in Một số hàm cung cấp khả xử lý xâu Ví dụ nh, findstr trả lại số bắt đầu xâu xâu khác: >> b = 'Peter Piper picked a peck of pickled peppers'; >> findstr(b, ' ') % Tìm kiếm khoảng trống 12 19 21 26 29 37 >> findstr(b, 'p') 13 22 30 38 40 41 >> find(b=='p') 13 22 30 38 40 41 >> findstr(b, 'cow') % T×m kiÕm tõ cow ans= [ ] >> findstr(b,'pick') ans= 13 30 Hàm trả lại ma trận rỗng phần cần tìm >> strrep(b,'Peter','Pamela') ans= Pamela Piper picked a peck of pickled peppers Nh trình bày trên, strrep đơn giản thay xâu strrep không làm việc với ma trận xâu, trớc tiên bạn cần phải chuyển từ ma trận thành vector 9.4 Ma trận tế bào xâu 60 Ma trận tế bào kiểu liệu cho phép bạn gọi tên thao tác với nhóm liƯu cã nhiỊu kÝch cì vµ nhiỊu kiĨu >> C = {'How';'about';'this for a';'cell array of strings?'} C= 'How' 'about' 'this for a' 'cell array of strings?' >> size(C) Ma trận có hàng cột nhng cột lại có độ dài khác Tất phần tử đợc đặt dấu ngoặc nhọn, phần tử đợc đặt dấu nháy đơn, hai hàng dấu chấm phẩy Mảng tế bào đợc đánh địa giống nh mảng thông thờng: >> C(2:) ans= 'about' 'this for a' >> C([4 1]) ans= 'cell array of strings?' 'this for a' 'about' 'How' >> C(1) ans= How Đây mảng tế bào Để thay đổi dấu nháy tế bào, ta sư dơng ngc nhän: >> s = c{4} ans= cell array of strings? >> size(s) ans= 22 §Ĩ truy nhập vào nhiều tế bào, ta dùng hàm deal: >> [a, b, c, d] = deal(C{:}) a= How b= about c= this for a d= cell array of trings? C{:} để truy nhập đến tất tế bào, giống nh: 61 >> [a, b, c, d] = deal(C{1}, C{2}, C{3}, C{4}) a= How b= about c= this for a d= cell array of strings? Hàm char dùng để chuyển từ mảng tế bào sang mảng xâu: >> s = char(C) How about this for a cell array of strings? >> size(s) % Kết xâu với khoảng trống ans= 22 >> ss = char(C(1:2)) ss= How about >> size(ss) ans= Để chuyển ngợc lại mảng tÕ bµo, ta dïng hµm cellstr: >> cellstr(s) ans= 'How' 'about' 'this for a' 'cell array of strings?' HÇu hÕt hàm xâu MATLAB làm việc với mảng xâu mảng tế bào Về mảng tế bào đợc trình bày rõ Chơng 19 chơng 10 thời gian MATLAB đa số hàm thao tác thời gian từ bạn tính toán với ngày, giờ, in lịch tìm kiến ngày thĨ MATLAB chøa ngµy vµ thêi gian nh− mét số có độ xác hai số sau dấu phẩy tợng trng cho số ngày, bắt đầu năm không Ví dụ, mồng tháng năm 1997 lúc nửa đêm, đợc tợng trng số 729391, cïng mét ngµy nh−ng lóc bi ch−a lµ 729391.5 CÊu trúc dễ dàng cho máy tính xử lÝ, nh−ng nã rÊt khã diƠn gi¶i Do vËy MATLAB cung cấp hàm trợ giúp chuyển đổi số xâu kí tự để thao tác với ngày vµ thêi gian ... Ví dụ: >> double(t) ans= Columns through 12 72 111 1 19 32 97 98 111 117 116 32 116 104 Columns 12 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105... 110 103 63 >> abs(t) ans= Columns through 12 72 111 1 19 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105... cho số ngày, bắt đầu năm không Ví dụ, mồng tháng năm 199 7 lúc nửa đêm, đợc tợng trng số 7 293 91, vµ cïng mét ngµy nh−ng lóc bi ch−a lµ 7 293 91.5 Cấu trúc dễ dàng cho máy tính xư lÝ, nh−ng nã rÊt

Ngày đăng: 11/05/2021, 04:00

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan