51
zeros Ma trËn kh«ng
VÝ dô
VÊn ®Ò
: Ta cã m¹ch ®iÖn nh trong h×nh 7.1 ®îc m« t¶ b»ng ph¬ng tr×nh ®iÖn ¸p nót khi nguån
®a vµo lµ sãng h×nh sin.
H×nh 7.1
E = 10o; R1 = 2; L = 10j; C = ; R2 = 10.
ë ®©y vi lµ ®iÖn ¸p gi÷a nót thø i vµ ®Êt. Hái ®iÖn ¸p t¹i mçi nót lµ bao nhiªu?
Gi¶i ph¸p:
§©y lµ vÊn ®Ò vÒ ph©n tÝch pha. Ph¬ng ph¸p gi¶i bµi nµy lµ gi¶i ph¬ng tr×nh trªn, vµ
chuyÓn c¸c kÕt qu¶ vÒ d¹ng thêi gian. Trong MATLAB gi¶i ph¸p sÏ lµ:
function circuit
% circuit.m script file to solve circuit proplem
A(1,1)=1/2; % poke in nonzero values as needed
A(1,2)=-1/2;
A(2,1)=-1/2;
A(2,2)=1/2 + 0.2j + 1/10j;
A(2,3)= -1/10j;
A(3,2)=-1/10j;
A(3,3)=1/10 + 1/10j;
y=[-1 0 0]'; % right hand side vector
v=A\y % complex solution
vmag=abs(v) % solution magnitudes
vphase=angle(v)*180/pi % solution phase in degrees
theta=linspace(0,2*pi); % plot results in time
v1=vmag(1)*cos(theta-vphase(1));
v2=vmag(2)*cos(theta-vphase(2));
v3=vmag(3)*cos(theta-vphase(3));
thd=theta*180/pi;
plot(thd,v1,thd,v2,thd,v3)
Sau khi ch¹y ch¬ng tr×nh trªn, kÕt qu¶ sÏ lµ:
v =
-4.0000 + 6.0000i
-2.0000 + 6.0000i
2.0000 + 4.0000i
vmag =
7.2111
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
52
6.3246
4.4721
vphase =
123.6901
108.4349
63.4349
H×nh 7.2
---------------------oOo---------------------
ch¬ng 8
c¸c phÐp tÝnh LOGIC Vµ QUAN HÖ
Thªm vµo nh÷ng to¸n ‘truyÒn thèng’, MATLAB cung cÊp to¸n tö logic vµ quan hÖ. B¹n cã thÓ
quen thuéc víi nh÷ng phÐp to¸n nµy, nÕu b¹n ®· lµm quen víi c¸c ng«n ng÷ lËp tr×nh kh¸c. Môc ®Ých
cña nh÷ng to¸n tö vµ hµm nµy lµ ®Ó tr¶ lêi c©u hái True_False (®óng_sai).
§èi víi c¸c sè th× trong to¸n tö logic vµ quan hÖ quy ®Þnh c¸c sè kh¸c kh«ng lµ True cßn sè kh«ng
lµ False. KÕt qu¶ cña phÐp to¸n logic vµ quan hÖ ®a ra lµ 1 cho True, 0 cho False.
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
53
8.1 To¸n tö quan hÖ
To¸n tö quan hÖ MATLAB bao gåm tÊt c¶ c¸c phÐp so s¸nh:
To¸n tö quan hÖ ý nghÜa
< nhá h¬n
<= nhá h¬n hoÆc b»ng
> lín h¬n
>= lín h¬n hoÆc b»ng
== b»ng
~= kh«ng b»ng
To¸n quan MATLAB thÓ dïng ®Ó so s¸nh hai m¶ng cã cïng kÝch cì hoÆc so s¸nh mét
m¶ng víi mét sè ®¬n. Trong trêng hîp thø hai, sè ®¬n so s¸nh víi tÊt c¶ c¸c phÇn tö cña m¶ng, kÕt
qu¶ tr¶ vÒ gièng nh kÝch cì cña m¶ng. VÝ dô:
>> A = 1:9, B = 9 - A
A=
1 2 3 4 5 6 7 8 9
B=
8 7 6 5 4 3 2 1 0
>> tf = A>4
tf=
0 0 0 0 1 1 1 1 1
t×m kiÕm c¸c phÇn tö cña A mµ lín h¬n 4. KÕt qu¶ b»ng 0 khi A 4, b»ng 1 khi A>4.
>> tf = (A==B)
tf=
0 0 0 0 0 0 0 0 0
T×m kiÕm c¸c phÇn tö cña A mµ b»ng víi B. Chó ý sù kh¸c nhau gi÷a = vµ == dïng ®Ó so s¸nh hai
biÕn vµ tr¶ vÒ 1 khi chóng b»ng nhau, 0 khi chóng kh¸c nhau; = dïng ®Ó g¸n kÕt qu¶ ®a ra cña to¸n tö
cho mét biÕn.
>> tf = B - (A>2)
tf=
8 7 5 4 3 2 1 0 -1
T×m c¸c phÇn tö A>2 vµ bÞ trõ bëi vector B. VÝ dô nµy chØ ra r»ng kÕt qu¶ ®a ra cña to¸n tö logic lµ
mét m¶ng sè bao gåm c¸c sè kh«ng vµ mét, chóng còng cã thÓ dïng trong c¸c phÐp to¸n sè häc.
>> B = B + (B==0)*eps
B=
Columns 1 through 7
8.0000 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000
Columns 8 through 9
1.0000 0.0000
VÝ dô trªn ®a ra c¸ch thay thÕ c¸c phÇn tö cña B mµ trïng víi kh«ng b»ng sè ®Æc biÖt cña MATLAB
lµ eps, cã gi¸ trÞ xÊp xØ 2.2e-16. C¸ch thay thÕ nµy ®«i khi cã Ých lµ tr¸nh trêng hîp chia cho sè
kh«ng nh vÝ dô sau:
>> x = (-3:3)/3
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
54
-1.0000 -0.6667 -0.3333 0 0.3333 0.6667 1.0000
>> sin(x)./x
Warning: Divide by zero
ans=
0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415
TÝnh to¸n hµm sin(x)/ x ®a ra mét c¶nh b¸o v× phÇn tö thø t b»ng kh«ng, sin(0)/ 0 kh«ng ®îc
®Þnh nghÜa, MATLAB tr¶ l¹i NaN ( nghÜa lµ kh«ng ph¶i lµ mét sè) t¹i vÞ trÝ ®ã trong kÕt qu¶. Thö l¹i
vÝ dô trªn, sau khi thay thÕ phÇn tö cã gi¸ trÞ b»ng kh«ng b»ng sè eps:
>> x = x + (x==0)*eps;
>> sin(x)/x
ans=
0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415
B©y giê sin(x)/ x t¹i x = 0 ®a ra kÕt qu¶ giíi h¹n chÝnh x¸c.
8.2 To¸n tö Logic
To¸n tö logic cung cÊp mét c¸ch diÔn ®¹t mèi quan hÖ phñ ®Þnh hay tæ hîp. To¸n tö logic
MATLAB bao gåm:
To¸n tö logic ý nghÜa
& AND
| OR
~ NOT
Mét vµi vÝ dô vÒ dïng to¸n tö logic:
>> A = 1:9; B = 9 - A;
>> tf = A>4
tf=
0 0 0 0 1 1 1 1 1
T×m kiÕm c¸c phÇn tö cña A mµ lín h¬n 4.
>> tf = ~(A>4)
1 1 1 0 0 0 0 0
phñ ®Þnh cña kÕt qu¶, t¬ng ®¬ng víi vÞ trÝ nµo b»ng kh«ng thay b»ng mét vµ ngîc l¹i.
>> tf = (A>2)&(A<6)
tf=
0 0 1 1 1 0 0 0 0
Tr¶ l¹i mét t¹i nh÷ng vÞ trÝ mµ phÇn tö cña A lín h¬n 2 vµ nhá h¬n 6.
8.3 C¸c hµm logic vµ hµm quan hÖ
Thªm vµo nh÷ng to¸n tö logic vµ to¸n tö quan hÖ ®Ò cËp ®Õn ë trªn, MATLAB cung cÊp c¸c hµm
logic vµ quan hÖ kh¸c díi ®©y:
C¸c hµm logic vµ hµm quan hÖ kh¸c
xor(x,y) To¸n tö hoÆc. Tr¶ l¹i gi¸ trÞ 1 khi x hoÆc y kh¸c kh«ng (True), gi¸ trÞ 0 khi c¶ x
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com
55
vµ cïng b»ng kh«ng (False) hoÆc cïng kh¸c kh«ng (True)
any(x).
Tr¶ l¹i 1 nÕu bÊt cø phÇn tö nµo trong vector x kh¸c kh«ng. Tr¶ l¹i 1 cho mçi cét
trong ma trËn x mµ cã c¸c phÇn tö kh¸c kh«ng.
all(x)
Tr¶ l¹i 1 nÕu tÊt c¶ c¸c phÇn tö cña vector x kh¸c kh«ng. Tr¶ l¹i 1 cho mçi cét
trong ma trËn x mµ tÊt c¶ c¸c phÇn tö kh¸c kh«ng.
MATLAB cßn cung cÊp rÊt nhiÒu c¸c hµm kiÓm tra cho sù tån t¹i cña c¸c gi¸ trÞ ®Æc biÖt hoÆc
®iÒu kiÖn vµ tr¶ l¹i nh÷ng kÕt qu¶ lµ gi¸ trÞ logic.
C¸c hµm kiÓm tra
isa(X, ‘name’) True nÕu X cã líp ®èi tîng lµ ‘name’
iscell(X) True nÕu ®èi sè lµ m¶ng phÇn tö.
iscellstr(X) True nÕu ®èi sè lµ m¶ng phÇn tö cña c¸c x©u.
ischar(S) True nÕu ®èi sè lµ x©u kÝ tù.
isempty(X) True nÕu ®èi sè lµ rçng.
isequal(A, B) True nÕu A vµ B gièng nhau.
isfield(S, ‘name’) True nÕu ‘name’lµ mét trêng cña cÊu tróc S.
isfinite(X) True khi c¸c phÇn tö cã h¹n.
isglobal(X) True khi ®èi sè lµ biÕn toµn côc.
ishandle(h) True khi ®èi sè lµ sù ®iÒu khiÓn ®èi tîng hîp lý
ishold True nÕu ®å thÞ hiÖn t¹i gi÷ tr¹ng th¸i ON.
isiee True nÕu m¸y tÝnh thùc hiÖn phÐp sè häc IEEE
isinf(X) True t¹i nh÷ng phÇn tö v« cïng
isletter(S) True khi c¸c phÇn tö thuéc b¶ng ch÷ c¸i.
islogical(X) True khi ®èi sè lµ m¶ng logic
ismember(A, B) True t¹i nh÷ng vÞ trÝ mµ phÇn tö cña A vµ B trïng nhau
isnan(X) True khi c¸c phÇn tö lµ kh«ng x¸c ®Þnh (NaN)
isnumeric(X) True khi ®èi sè lµ m¶ng sè
isppc True cho Macintosh víi bé xö lý PowerPC
isprime(X) True khi c¸c phÇn tö lµ sè nguyªn tè
isreal(X) True khi ®èi sè kh«ng cã phÇn ¶o
isspace(S) True khi c¸c phÇn tö lµ kÝ tù tr¾ng
issparse(A) True nÕu ®èi sè lµ ma trËn Sparse
isstruct(S) True nÕu ®èi sè lµ mét cÊu tróc
isstudent True nÕu Student Edition cña MATLAB
isunix True nÕu m¸y tÝnh lµ UNIX
isvms True nÕu m¸y tÝnh lµ VMS
----------------------oOo--------------------
ch¬ng 9
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ù.
Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com