Chuỗi kí tự trong Matlab là mảng các giá trị mã ASSCII của ký tự muốn hiển thị
>> t='How about this charcacter string?' >> size(t) >> whos
Cấu trúc của chuỗi
Muốn xem mã ASCII của ký tự, dùng lệnh double:
>> u=double(t)
Hàm chuyển ngược lại từ mã ASCII thành chuỗi
>> char([77 114 32 78 104 97 126 32 110 117 109 98 101 114 32 111 110 101 33])
Với mảng các ký tự, có thể thao tác như trên một mảng thông thường:
>>u=t(16:24) >>u=t(26:-1:16) >>u=t(16:24)'
Để đưa vào mảng dấu nháy đơn ta sử dụng 2 dấu nháy đơn:
>>v='I can''t find the manual!'
Có thể nối 2 chuỗi với nhau:
>>w=[u,v]
Để in ra chuỗi dùng lệnh disp:
>>disp(w);
Chuyển từ số sang chữ và ngược lại
Để chuyển đổi chuỗi thành dạng số, số thành kí tự, dùng những lệnh sau
Các lệnh chuyển đổi |
int2str |
num2str |
mat2str |
sprintf |
fprintf |
Ví dụ:
>>int2str(eye(3)) %chuyển mảng interger sang kí tự >>size(ans) >>num2str(rand(2,4)) %chuyển số sang kí tự >>size(ans) >>mat2str(rand(2,4)) %chuyển ma trận sang kí tự >>size(ans)
Để hiển thị chuỗi và biến, sử dụng hàm sprintf
Các kí tự đặc biệt như \n, \r, \t, \b, \f có ý nghĩa như xuống dòng mới, quay lại đầu dòng, cách lề 1 khoảng tab…
Lệnh | Kết quả |
sprintf(‘%.0e\n’,pi) | 3e+00 |
sprintf(‘%.1e\n’,pi) | 3.1e+00 |
sprintf(‘%.3e\n’,pi) | 3.142e+00 |
sprintf(‘%.0f\n’,pi) | 3 |
sprintf(‘%.1f\n’,pi) | 3.1 |
sprintf(‘%.3f\n’,pi) | 3.142 |
Lệnh | Mô tả |
ischar(s) | có phải là chuỗi kí tự không |
isletter(s) | có phải là kí tự không |
isspace(s) | có khoảng trống không |
findstr(s1,s2) | tìm chuỗi s2 trong chuỗi s1 |
strcmp (s1,s2) | so sánh 2 chuỗi có bằng nhau không |
strmatch(s1,s2) | trả về vị trí chuỗi thứ 1 có trùng kí tự đầu chuỗi 2 |
lower(s) | chuyển sang dạng viết thường |
upper(s) | chuyển sang dạng viết in hoa |
Ví dụ các hàm xử lý chuỗi
>> b='Peter Piper picked a peck of pickled peppers'; >> findstr(b,' ') >> findstr(b,'p') >> find(b=='p') >> findstr(b,'cow') >> findstr(b,'pick')
>> c='a2 : b_c'; >> ischar(c) >> isletter(c) >> isspace(c)
>> S=char('apple','banana','peach','mango','pineapple') >> strmatch('pe',S) >> strmatch('p',S) >> strmatch('banana',S) >> strmatch('Banana',S) >> upper('Banana') >> lower('Banana')