
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
cã thÓ 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 qu¶ lµ c¸c x©u víi c¸c kho¶ng trèng.
ans=
4 22
>> ss = char(C(1:2))
ss=
How
about
>> size(ss)
ans=
2 5
§Ó 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 c¸c hµm x©u trong MATLAB lµm viÖc víi c¶ m¶ng x©u hoÆc m¶ng tÕ bµo.
VÒ m¶ng tÕ bµo sÏ ®−îc tr×nh bµy râ h¬n ë Ch−¬ng 19.
ch−¬ng 10
thêi gian
MATLAB ®−a ra mét sè hµm thao t¸c vÒ thêi gian tõ ®ã b¹n cã thÓ tÝnh to¸n víi ngµy, giê, in lÞch
vµ t×m kiÕn nh÷ng ngµy cô thÓ. MATLAB chøa ngµy vµ thêi gian nh− mét sè cã ®é chÝnh x¸c hai sè
sau dÊu phÈy t−îng tr−ng cho sè ngµy, b¾t ®Çu b»ng n¨m kh«ng. VÝ dô, mång 1 th¸ng 1 n¨m 1997 t¹i
lóc nöa ®ªm, nã ®−îc t−îng tr−ng bëi sè 729391, vµ cïng mét ngµy nh−ng lóc buæi ch−a lµ 729391.5.
CÊu tróc nµy cã thÓ 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 c¸c hµm trî gióp chuyÓn ®æi gi÷a sè vµ x©u kÝ tù vµ ®Ó thao t¸c víi ngµy vµ thêi gian.

62
10.1 Ngµy vµ giê hiÖn t¹i
Hµm
clock
tr¶ vÒ ngµy vµ giê hiÖn t¹i chøa trong mét m¶ng. VÝ dô:
>> T = clock
T=
1997 1 21 16 33 39.934708
Hµm
now
tr¶ vÒ ngµy vµ thêi gian hiÖn t¹i nh− sè ngµy quy −íc cña m¸y hoÆc ®¬n gi¶n lµ sè
ngµy.
>> t = now
t=
729411.690045541
C¶ hai kÕt kÕt qu¶ ë trªn cã cïng mét th«ng tin.
Hµm
date
tr¶ l¹i ngµy hiÖn t¹i nh− mét x©u theo mÉu: dd-mmm-yyyy
>> date
ans =
21-Jan-1997
10.2 Sù chuyÓn ®æi gi÷a c¸c kiÓu
B¹n cã thÓ chuyÓn sè ngµy ra x©u, sö dông hµm
datestr
. CÊu tróc cña hµm nµy cã d¹ng nh− sau:
datestr(date_number,format_spec).
Sau ®©y lµ trî gióp cña
help
cho hµm
datestr
:
>> help datestr
DATESTR string representation of date.
DATESTR(D,DATEFORM) converts a serial data
number D (as returned by DATENUM) into a date
string. The string is formatted according to
the format number or string DATEFORM (see table
below). By default,
DATEFORM is 1, 16, or 0 depending on whether D
contains
dates, times or both.
DATEFORM number DATEFORM string Example
0 'dd-mmm-yyyy HH:MM:SS' 01-Mar-1995
15:45:17
1 'dd-mmm-yyyy' 01-Mar-1995
2 'mm/dd/yy' 03/01/95
3 'mmm' Mar
4 'm' M
5 'mm' 3
6 'mm/dd' 03/01
7 'dd' 1

63
8 'ddd' Wed
9 'd' W
10 'yyyy' 1995
11 'yy' 95
12 'mmmyy' Mar95
13 'HH:MM:SS' 15:45:17
14 'HH:MM:SS PM' 3:45:17 PM
'HH:MM' 15:45
16 'HH:MM PM' 3:45 PM
17 'QQ-YY' Q1-96
18 'QQ' Q1
vÝ dô víi hµm
datestr
:
>> datestr(t)
ans=
21-Jan-1997 16: 33: 40
>> datestr(t,14)
ans=
4: 33: 40 PM
Hµm
datenum
lµ hµm ng−îc cña
datestr
. Hµm nµy chuyÓn mét x©u kÝ tù d¹ng ngµy dïng mÉu
datenum(str)
, hoÆc mét sè ®éc lËp hoÆc mét vector sang sè d¹ng ngµy, dïng mÉu:
datenum(year, month, day)
hoÆc
datenum(year, month, day, hour, minute, second).
>> datenum('21-Jan-1997 16: 33: 40')
ans=
729411.690045541
>> datenum(1997, 01, 21)
ans=
729411
>> datenum(1997, 01, 21, 16, 33, 40)
ans=
729411.690045541
Hµm
datevec
chuyÓn mét x©u kÝ tù d¹ng ngµy (dïng
datestr
d¹ng 0, 1, 2, 6, 13, 14, 15, hoÆc
16) hoÆc mét sè d¹ng ngµy sang vector.
>> c = datevec('12/ 24/ 1984')
c=
1984 12 24 0 0 0
>> [yr, mo, day, hr, nim, sec] = datevec('24-Dec-1984 08: 22')
yr=
1984
mo=
12

64
day=
24
hr=
8
min=
22
sec=
0
10.3 C¸c hµm vÒ ngµy
Ngµy cña tuÇn cã thÓ t×m tõ x©u d¹ng ngµy hoÆc sè d¹ng ngµy, dïng hµm
weekday
, MATLAB sö
dông quy −íc Sunday = 1 vµ Saturday = 7.
>> [d w] = weekday(728647)
d=
2
w=
Mon
>> [d w] = weekday('21-Dec-1994')
d=
4
w=
Wed
Ngµy cuèi th¸ng cã thÓ t×m b»ng hµm
eomday
. Trong ®ã b¾t buéc ph¶i ®−a vµo n¨m, th¸ng.
>> eomday(1996, 2) % 1996 lµ n¨m
ans=
29
MATLAB cã thÓ t¹o lÞch cho bÊt cø th¸ng nµo b¹n yªu cÇu, vµ hiÓn thÞ nã trong cöa sæ lÖnh
hoÆc ®Æt chóng trong mét ma trËn 6x7.
>> calendar('7/ 17/ 95')
Jul 1995
S M Tu W Th F S
0 0 0 0 0 0 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 0 0 0 0 0
>> S = calendar(1994, 12)
S =
0 0 0 0 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
0 0 0 0 0 0 0

65
10.4 C¸c hµm vÒ thêi gian
LÖnh
tic
vµ
toc
cã thÓ ®−îc dïng ®èi víi thêi gian trong tÝnh to¸n:
>> tic; plot(rand(5)); toc
elapsed_time =
0.2200
H×nh 10.1
>> tic; plot(rand(5)); toc
elapsed_time =
0.1700

