1/24/07

3.3 MATLAB處理指令

在MATLAB中,複數的表示法如下:

 Z = R.*exp(j*theta) ----------------(1.13)

此與R 值之表示相同,而j與i均代表虛數部份,兩者同義。注意此處theta為其水平夾角,以弧度表示;R後有一點,表示為元素單項對乘,不是矩陣乘法,因此R值亦可用矩陣型式輸入;而j*theta則無點,代表其為虛數處理。不過上式若R值僅單一項,則可不用加點。

範例一


一向量值為10,角度分別為45度、60度及90度,求其對應複數表示形式,且當其陸續乘以j之後,其對應複數值之變化。
[解]

>> a=10*exp(j*pi./[4 3 2])
a = 7.0711 + 7.0711i 5.0000 + 8.6603i 0.0000 +10.0000i
>> b=a*j
b = -7.0711 + 7.0711i -8.6603 + 5.0000i -10.0000 + 0.0000i
>> c=b*j
c = -7.0711 - 7.0711i -5.0000 - 8.6603i -0.0000 -10.0000i
>> d=c*j
d = 7.0711 - 7.0711i 8.6603 - 5.0000i 10.0000 - 0.0000i
>> e=d*j
e = 7.0711 + 7.0711i 5.0000 + 8.6603i 0.0000 +10.0000i

注意其間符號及其代表象限之變化,至e值時,正好環繞一週,故應與a值相同。

若以同一向量旋轉四個象限,即分別在0、π/2、π、3π/2、2π之角度位置,則其相對複數值應為:

>> format long
>> a=10*exp(j*pi.*[0 1/2 1 3/2 2]')
a =
10.00000000000000
0.00000000000000 +10.00000000000000i
-10.00000000000000 + 0.00000000000000i
-0.00000000000000 -10.00000000000000i
10.00000000000000 - 0.00000000000000i

上述結果之最後一項值實際上與第一項值相同。

此外Z值若為複數,其向量夾角及絕對值可用下面指令求得:

THETA = angle(Z)
R = abs(Z) -----------------------(1.14)

設 Z =10+5i,用MATLAB執行如下:

>>Z =10+5i
Z= 10.0000 + 5.0000i
>> theta=angle(Z)
theta = 0.4636
>> r=abs(Z)
r = 11.1803

theta得到的角度是弧度,若使用度數時可用下面指令轉換:

>> angle=theta*180/pi
angle = 26.5651


1-2.6 複數向量之合成


利用複數之實數與虛數兩種不同性質的領域可以在二維向量上作某種程度的搭配,在解題的技巧上可以簡化觀念。平面物體的運動可以分成兩個互相垂直的座標分量,因而可在二度空間中定域向量之變化。下面的程式函數comb_vectors可以用來計算多個複數向量之合向量與夾角,其輸入參數可為各對應向量之複數值,也可以是各之絕對值與其對應之水平夾角,輸出值為總合向量之值與角度。此處之夾角均以水平夾角之度數表示。

程式內容


此程式容許兩種輸入型式。其一是Z為絕對向量值陣列,theta為其對應之水平夾角度數;其二是僅有一項輸入Z,其型式為複數向量陣列。執行後,其輸出值為合向量及水平角,並在圖中顯示。

function [Zp,thetaZ]=comb_vectors(Z,theta)
% Find the final position vector rp consisting
% of complex vectors Z
% using complex vector method
% Zs are considered as complex forms when theta is not used
%
% Example: [rp, thetap]=comb_vectors([3+4j 3+4j 3+4j])
d2g=pi/180;
if nargin==2,
Z=Z.*exp(i*theta*d2g);
end
format short;
Z=[0+0i;Z(:)];
Zp=sum(Z);
Rz=abs(Zp);%開方根求其絕對值
thetaZ=angle(Zp)/d2g;%求得相角,並轉回一般角度
plot(cumsum(Z));hold on;%繪出各組成向量
plot([0+0i;Zp],'r-');%繪出結果紅線向量
xlabel('X-axis');
ylabel('Y-axis');
title(['Resultant:' num2str(Rz) ' Angle(deg.):' num2str(thetaZ)])
axis equal;grid on

執行例:輸入三個向量,長度分別為[3 4 5]公分,其對應水平角度分別為[35 50 60]度,試利用上式comb_vectors函數求得其合向量:


>> [rp, thetap]=comb_vectors([3 4 5],[35 50 60])
rp =
7.5286 + 9.1150i
thetap =
50.4448


若輸入的三個複數向量,分別為[2+1j 2+3j 1+5j]公分,可利用同一函數求得此三個向量之合向量及水平角度:

>> [rp, thetap]=comb_vectors([2+1j 2+3j 1+5j])
rp =
5.0000 + 9.0000i
thetap =
60.9454



輸入向量及角度[3 4 5],[35 50 60]



輸入為複數向量[2+1j 2+3j 1+5j]


由上述之應用可知:若平面向量能轉為複數表示,其運算可分別依實數與虛數部份個別計算。