第二章數(shù)值數(shù)組及其運算_第1頁
第二章數(shù)值數(shù)組及其運算_第2頁
第二章數(shù)值數(shù)組及其運算_第3頁
第二章數(shù)值數(shù)組及其運算_第4頁
第二章數(shù)值數(shù)組及其運算_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1第二章、數(shù)值數(shù)組及其運算2 本章集中敘述了一維、二維、任意高維雙精度數(shù)值數(shù)組的生成和操作。這是MATLAB最常用、最基本、最傳統(tǒng)的數(shù)據(jù)類型,定義在此類“對象”上的“方法”就是最具魅力的數(shù)組運算。32.1 引導 數(shù)組是指由一組實數(shù)或復數(shù)排成的長方陣列。它可以是一維的“行”或“列”,可以是二維的“矩形”,也可以是三維的“若干同維矩陣的堆疊”,甚至更高的任意維。 數(shù)組運算是指:無論在數(shù)組上實施什么運算(加減乘除或函數(shù)),總認定那種運算對被運算數(shù)組中的每個元素平等的操作。4數(shù)組和數(shù)組運算的目的在于: 使計算程序簡單、易讀,使程序指令更接近于教科書上的數(shù)學計算公式 提高程序的向量化程度,提高計算效率,

2、節(jié)省計算機開銷。52.2 一維數(shù)組的創(chuàng)建和尋訪 2.2.1 一維數(shù)組的創(chuàng)建(1)逐個元素輸入法 x=2 pi/2 sqrt(3) 3+5ix = 2.0000 1.5708 1.7321 3.0000 + 5.0000i6(2) 冒號成長法 這是通過“步長”設定,生成一維“行”數(shù)組的方法。 x=a:inc:b a是數(shù)組的第一個元素;inc是采樣點之間的間隔,即步長。若(b-a)是inc的整數(shù)倍,則所生成的最后一個元素等于b,否則小于b。7(3)定數(shù)線形采樣法 該法在設定的“總點數(shù)”下,均勻采樣生成一維“行”數(shù)組。 格式:x=linspace(a,b,n) 其中,a,b分別是生成數(shù)組的第一個和最

3、后一個元素。n是采樣總點數(shù)。x=linspace(10,20,11)x =10 11 12 13 14 15 16 17 18 19 20 82.2.2 一維數(shù)組的子數(shù)組尋訪和賦值(1)子數(shù)組的尋訪 x(index) 尋找什么樣的子數(shù)組,取決于下標index,其取值范圍是(1,數(shù)組長度)之間的正整數(shù)或正整數(shù)數(shù)組。eg: x=rand(1,5)x = 0.9501 0.2311 0.6068 0.4860 0.8913 x(3)ans = 0.6068 x(1 2 5)ans = 0.9501 0.2311 0.89139(2)子數(shù)組的賦值eg: x(3)=0 x = 0.9501 0.2311

4、 0 0.4860 0.8913 x(1 4)=1 1x = 1.0000 0.2311 0 1.0000 0.8913102.3 二維數(shù)組的創(chuàng)建2.3.1 直接輸入法 規(guī)則: 整個輸入數(shù)組必須用 括住 數(shù)組元素必須用逗號或空格分隔 在 內(nèi)數(shù)組的行與行之間必須用分號分隔或按Enter鍵分割11 數(shù)組元素可以是數(shù)字或任何matlab表達式 ,表達式不可包含未知的變量;可以是實數(shù) ,也可以是復數(shù),復數(shù)可用特殊函數(shù)i輸入。 例:1. a=1 2 3;4 5 6 2. b=2 pi/2;sqrt(3) 3+5i 3. x=9; y=pi/6; %定義x,y變量 A=3 5 sin(y) cos(y)

5、x2 7 x/2 5 1 %產(chǎn)生數(shù)組A說明:%為Matlab注釋的開始標志,后面的文字不進行計算122.3.2 利用M文件創(chuàng)建和保存數(shù)組 針對比較大而復雜的數(shù)組步驟:(1)打開文件編輯調(diào)試器,并在空白填寫框中輸入數(shù)組;(2)保存文件,命名為*.m;(3)在MATLAB指令窗口中,運行*.m文件,數(shù)組自動保存在MATLAB內(nèi)存中。132.4 二維數(shù)組元素的標識2.4.1 “全下標”標識 即指出 “第幾行,第幾列”的元素eg: a=rand(2,3)a = 0.7621 0.0185 0.4447 0.4565 0.8214 0.6154 a(2,3)ans = 0.6154142.4.2 “單下

6、標”標識 即用一個下標來指明元素在數(shù)組中的位置。 首先進行“一維編號”,把二維數(shù)組按先左后右的次序、首尾相接排成一維長列;然后,自上而下對元素位置進行編號。 MATLAB在實現(xiàn)兩種標識方法間的轉(zhuǎn)換命令有: sub2ind 全下標單下標 ind2sub 單下標全下標152.4.3 “邏輯1”標識eg: A=zeros(2,5)A = 0 0 0 0 0 0 0 0 0 0 A(:)=-4:5A = -4 -2 0 2 4 -3 -1 1 3 5 L=abs(A)3L = 1 0 0 0 1 0 0 0 0 1 islogical(L) %判斷L是否是邏輯值數(shù)組ans = 1 x=A(L) %把L

7、中邏輯值為1對應的A元素取出 x = -4 4 5162.5 二維數(shù)組的子數(shù)組尋訪和賦值A=zeros(2,4) A = 0 0 0 0 0 0 0 0 A(:)=1:8 %全元素賦值法全元素賦值法 A = 1 3 5 7 2 4 6 8 s=2 3 5;A(s)Sa=10 20 30A(s)=Sa ans = 2 3 5Sa = 10 20 30A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) A = 1 1 1 7 10 1 1 8 例:不同賦值方式示例。同一維數(shù)組的子數(shù)組尋訪和賦值的方法172.6 執(zhí)行數(shù)組運算的常用函數(shù)MATLAB典典型函數(shù)型函數(shù)含義含義M

8、ATLAB典型函數(shù)典型函數(shù)含義含義abs(x)求絕對值求絕對值tan(x)正切值正切值sqrt(x)求平方根值求平方根值cot(x)余切值余切值exp(x)指數(shù)運算指數(shù)運算atan(x)反正切值反正切值sin(x)正弦值正弦值acot(x)反余切值反余切值cos(x)余弦值余弦值log(x)自然對數(shù)自然對數(shù)asin(x)反正弦值反正弦值Log2(x)以以2為底的對數(shù)為底的對數(shù)acos(x)反余弦值反余弦值Log10(x)常用對數(shù)常用對數(shù)182.7 數(shù)組運算和矩陣運算 從外觀形狀和數(shù)據(jù)結(jié)構(gòu)上看,二維數(shù)組和(數(shù)學中的)矩陣沒有區(qū)別。但是,矩陣作為一種變換或映射算子的體現(xiàn),矩陣運算有著明確的數(shù)學規(guī)則

9、;數(shù)組運算是MATLAB軟件所定義的規(guī)則,其目的是為了數(shù)據(jù)管理方便、操作簡單、指令形式自然和執(zhí)行計算的有效。雖然數(shù)組運算尚缺乏嚴謹?shù)臄?shù)學推理,數(shù)組運算本身仍在完善和成熟中。19201. 直接輸入矩陣的創(chuàng)建 規(guī)則: 矩陣元素必須用 括住 矩陣元素必須用逗號或空格分隔 在 內(nèi)矩陣的行與行之間必須用分號分隔或按Enter鍵分割21 矩陣的修改 直接修改 可用鍵找到所要修改的矩陣,用鍵移動到要修改的矩陣元素上即可修改。 指令修改 可以用A(,)= 來修改。22例如 a=1 2 0;3 0 5;7 8 9a =1 2 0 3 0 5 7 8 9 a(3,3)=0a =1 2 0 3 0 5 7 8 02

10、32.用matlab函數(shù)創(chuàng)建和修改矩陣 Matlab提供了大量的函數(shù)來創(chuàng)建一些常用的特殊矩陣,例如對角陣、單位陣和零矩陣 例1:0-1分布的隨機矩陣,利用rand函數(shù)產(chǎn)生任意行列的隨機矩陣 a=rand(5,5)24例2 利用diag產(chǎn)生對角陣 diag(M)M為矩陣或向量,對于矩陣,取對角元產(chǎn)生一個列向量;對于向量則產(chǎn)生一個對角陣 a=rand(5,5)a = 0.7027 0.7948 0.9797 0.1365 0.6614 0.5466 0.9568 0.2714 0.0118 0.2844 0.4449 0.5226 0.2523 0.8939 0.4692 0.6946 0.880

11、1 0.8757 0.1991 0.0648 0.6213 0.1730 0.7373 0.2987 0.9883 D=diag(d) %向量產(chǎn)生矩陣D = 0.7027 0 0 0 0 0 0.9568 0 0 0 0 0 0.2523 0 0 0 0 0 0.1991 0 0 0 0 0 0.9883 d=diag(a) %矩陣產(chǎn)生列向量d = 0.7027 0.9568 0.2523 0.1991 0.988325Matlab中用于產(chǎn)生特殊矩陣的函數(shù)zeros(m,n) mn的零矩陣,全部元素都為0ones(m,n) 全部元素都為1的mn的矩陣rand(m,n) 隨機矩陣eye(m,n)

12、 單位矩陣magic(n) n維magic方陣空陣 matlab允許輸入空陣,當一項操作無結(jié)果時,返回空陣。26 還有伴隨矩陣、稀疏矩陣、范德蒙等矩陣的創(chuàng)建等等注意:matlab嚴格區(qū)分大小寫字母,因此a與A是兩個不同的變量。 matlab函數(shù)名必須小寫。273 矩陣的基本數(shù)值運算(1)矩陣加、減法運算規(guī)則: 相加、減的兩矩陣必須有相同的行和列兩矩陣對應元素相加減。 允許參與運算的兩矩陣之一是標量。標量與矩陣的所有元素分別進行加減操作。MATLAB表達式加a+b減a-b乘a*b除a/b 或 ab冪ab28(2) 矩陣乘()運算規(guī)則:A矩陣的列數(shù)必須等于B矩陣的行數(shù)例a=1 2 3;4 5 6;

13、7 8 0;b=1;2;3;c=a*bc =14 32 23標量可與任何矩陣相乘 例 d=-1;0;2;f=pi*d f = -3.1416 0 6.283229在matlab中矩陣除的運算有兩種矩陣除運算MATLAB用“/” 代表右除(常用除法)和“”左除運算。這兩種運算的差別如下:例如:2/5 表示0.4, 25 表示2.5;對于矩陣,A/B 表示AB-1,即A*inv(B);BA 表示B-1A,即inv(B)*A。矩陣除法可以看作矩陣乘法的逆運算(3) 矩陣除運算30例例左除解方程組左除解方程組ax=b的解的解 :x=ab a=rand(5); %產(chǎn)生(5*5)的均勻分布隨機矩陣 b=o

14、nes(5,1); %產(chǎn)生全為1的5元列向量 x1=inv(a)*bx1 = -0.1734 0.5573 0.0309 0.7208 0.8147 x2=abx2 = -0.1734 0.5573 0.0309 0.7208 0.814731 a p a 自乘p次冪 方陣方陣1的整數(shù)的整數(shù)(4) 矩陣乘方 an,ap,pa 對于p的其它值,計算將涉及特征值和特征向量,如果p是矩陣,a是標量ap使用特征值和特征向量自乘到p次冪;如a,p都是矩陣,ap則無意義。32 a=1,2,3;4,5,6;7,8,9;a2 ans =30 36 42 66 81 96 102 126 150當一個方陣有復數(shù)

15、特征值或負實特征值時,非整數(shù)冪是復數(shù)陣。33 a0.5 ans = 0.4498 + 0.7623i 0.5526 + 0.2068i 0.6555 -0.3487i 1.0185 + 0.0842i 1.2515 + 0.0228i 1.4844 - 0.0385i 1.5873 - 0.5940i 1.9503 - 0.1611i 2.3134 + 0.2717i34inv 矩陣求逆size 矩陣的大?。ㄐ辛袛?shù))det 行列式的值eig 矩陣的特征值rank 矩陣的秩 矩陣轉(zhuǎn)置sqrt 矩陣開方svd矩陣的奇異值分解(5) 矩陣的其它運算 35(6)矩陣的一些特殊操作矩陣的變維 a=1:1

16、2;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:)矩陣的變向 rot90:旋轉(zhuǎn); fliplr:上翻; flipud:下翻矩陣的抽取 diag:抽取主對角線;tril: 抽取主下三角; triu:抽取主上三角362.8 數(shù)組構(gòu)作技法綜合賦值擴展法賦值擴展法A=reshape(1:9,3,3) A = 1 4 7 2 5 8 3 6 9 A(5,5)=111 A = 1 4 7 0 0 2 5 8 0 0 3 6 9 0 0 0 0 0 0 0 0 0 0 0 111 A(:,6)=222 A = 1 4 7 0 0 222 2 5 8 0 0 222 3 6 9

17、 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 多次尋訪擴展法多次尋訪擴展法AA=A(:,1:6,1:6) AA = 1 4 7 0 0 222 1 4 7 0 0 222 2 5 8 0 0 222 2 5 8 0 0 222 3 6 9 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 0 0 0 0 111 222 合成擴展法合成擴展法B=ones(2,6) B = 1 1 1 1 1 1 1 1 1 1 1 1 AB_r=A;B AB_r = 1 4 7 0 0 222 2

18、5 8 0 0 222 3 6 9 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 1 1 1 1 1 1 1 1 1 1 1 1 AB_c=A,B(:,1:5) AB_c = 1 4 7 0 0 222 1 1 2 5 8 0 0 222 1 1 3 6 9 0 0 222 1 1 0 0 0 0 0 222 1 1 0 0 0 0 111 222 1 1 (1)數(shù)組的擴展37(2)單下標尋訪和reshape 指令演示clearA=reshape(1:16,2,8) 變一維數(shù)組為(變一維數(shù)組為(28)數(shù)組)數(shù)組 A = 1 3 5 7 9 11 13 15 2 4

19、 6 8 10 12 14 16 reshape(A,4,4) ans = 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 s=1 3 6 8 9 11 14 16;定義單下標數(shù)組定義單下標數(shù)組A(s)=0 對元素賦值對元素賦值 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0 38(3)邏輯函數(shù)的運用R=randn(3,6) R = 0.8644 0.8735 -1.1027 0.1684 -0.5523 -0.6149 0.0942 -0.4380 0.3962 -1.9654 -0.8197 -0.2546 -0.8519 -0

20、.4297 -0.9649 -0.7443 1.1091 -0.2698 L=abs(R)1.5% 不等式條件運算,結(jié)果給出邏輯數(shù)組不等式條件運算,結(jié)果給出邏輯數(shù)組 L = 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 0 1 R(L)=0% “邏輯邏輯1”對應的元素賦對應的元素賦0值值 R = 0.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0 0 0 -0.8197 0 -0.8519 0 -0.9649 -0.7443 1.1091 0 s=(find(R=0) %利用利用find獲得符合關(guān)系等式條件的元素的獲得符合關(guān)系等式條件的元素

21、的“單下標單下標” s = 2 5 6 8 10 11 17 18 R(s)=111 利用利用“單下標單下標”定位賦值定位賦值 R = 0.8644 0.8735 -1.1027 111.0000 -0.5523 -0.6149 111.0000 111.0000 111.0000 111.0000 -0.8197 111.0000 -0.8519 111.0000 -0.9649 -0.7443 1.1091 111.0000 ii,jj=find(R=111); %利用利用find獲得符合關(guān)系等式條件的元素的獲得符合關(guān)系等式條件的元素的“雙下標雙下標” disp(ii),disp(jj)

22、2 2 3 2 1 2 2 3 1 2 2 3 4 4 6 6 392.9 高維數(shù)組2.9.1 高維數(shù)組的創(chuàng)建方法:直接通過“全下標”元素賦值方法由若干相同的低維數(shù)組合成由函數(shù)ones,zeros,rand,randn直接創(chuàng)建借助cat,repmat,reshape等函數(shù)構(gòu)作40 【例1】“全下標”元素賦值方式創(chuàng)建高維數(shù)組演示。A(2,2,2)=1 A(:,:,1) = 0 0 0 0A(:,:,2) = 0 0 0 1 B(2,5,:)=1:3 B(:,:,1) = 0 0 0 0 0 0 0 0 0 1B(:,:,2) = 0 0 0 0 0 0 0 0 0 2B(:,:,3) = 0 0

23、 0 0 0 0 0 0 0 3 41【例2】低維數(shù)組合成高維數(shù)組。clear; A=ones(2,3);A(:,:,2)=ones(2,3)*2;A(:,:,3)=ones(2,3)*3 A(:,:,1) = 1 1 1 1 1 1A(:,:,2) = 2 2 2 2 2 2A(:,:,3) = 3 3 3 3 3 3 42【例3】由函數(shù)ones, zeros, rand, randn直接創(chuàng)建標準高維數(shù)組的示例。rand(2,4,3) ans(:,:,1) = 0.6278 0.9748 0.2585 0.6949 0.2544 0.2305 0.0313 0.1223ans(:,:,2)

24、= 0.4889 0.3898 0.8489 0.0587 0.9138 0.3071 0.4260 0.6331ans(:,:,3) = 0.2802 0.2073 0.7438 0.2714 0.4051 0.2033 0.4566 0.2421 43【例 4】借助cat, repmat, reshape等函數(shù)構(gòu)作高維數(shù)組。cat(3,ones(2,3),ones(2,3)*2,ones(2,3)*3) %第一個輸入宗量填寫的數(shù)字是第一個輸入宗量填寫的數(shù)字是“表示串連接方向的維數(shù)表示串連接方向的維數(shù)”ans(:,:,1) = 1 1 1 1 1 1ans(:,:,2) = 2 2 2 2

25、2 2ans(:,:,3) = 3 3 3 3 3 3 repmat(ones(2,3),1,1,3) 第一個輸入宗量是第一個輸入宗量是”模塊數(shù)組模塊數(shù)組”; 第二個輸入宗量是第二個輸入宗量是“各維方向各維方向”鋪放鋪放“模塊數(shù)組模塊數(shù)組”的的 數(shù)目數(shù)目ans(:,:,1) = 1 1 1 1 1 1ans(:,:,2) = 1 1 1 1 1 1ans(:,:,3) = 1 1 1 1 1 1 reshape(1:12,2,2,3) 第一個輸入宗量是第一個輸入宗量是“待重組待重組”的數(shù)組;第二、三、四是的數(shù)組;第二、三、四是“行數(shù)、列數(shù)、頁數(shù)行數(shù)、列數(shù)、頁數(shù)”ans(:,:,1) = 1 3

26、 2 4ans(:,:,2) = 5 7 6 8ans(:,:,3) = 9 11 10 12 442.9.2 高維數(shù)組的標識(1)數(shù)組維數(shù)和ndims指令(2)數(shù)組的大小和size指令、length指令eg:clear;A=reshape(1:24,2,3,4);dim_A=ndims(A) %維數(shù)size_A=size(A) %大小L_A=length(A) %長度(等價max(size(A) dim_A = 3size_A = 2 3 4L_A = 4 452.10 “非數(shù)”和“空”數(shù)組2.10.1 非數(shù) NaN 根據(jù)IEEE數(shù)學標準,0/0,0/, 0* 等運算都會產(chǎn)生非數(shù)( Not

27、a Number )。該非數(shù)在MATLAB中用NaN或nan記述。 性質(zhì):(1) NaN參與運算所得的結(jié)果也是NaN,即具有傳遞性(2)非數(shù)沒有大小的概念,即兩個非數(shù)不能比較大小。46非數(shù)的功能(1)真實記述0/0,0/, 0* 運算的結(jié)果(2)避免可能因為0/0,0/, 0* 運算而造成程序執(zhí)行的中斷(3)在數(shù)據(jù)可視化中,用來剪裁圖形472.10.2 “空”數(shù)組 “空”數(shù)組由MATLAB 的生成器確定,并有它自己的特性。空數(shù)組是簡單的,它們是MATLAB 大小為零的變量 ?!翱铡睌?shù)組的功能:(1)在沒有“空”數(shù)組參與的運算時,計算結(jié)果中的“空”可以合理地解釋“所得結(jié)果的含義”(2)運用“空”數(shù)組對其他非空數(shù)組賦值,可以改變數(shù)組得大小,但不能改變數(shù)組得維數(shù)。482.11 關(guān)系操作和邏輯操作 關(guān)系操作符 邏輯操作符 關(guān)系與邏輯函數(shù) 各種運算符的優(yōu)先級 49(1) 關(guān)系操作符 關(guān)系運算符該運算符的功能關(guān)系運算符該運算符的功能=大于等于 大于=等于=小于等于=約等于關(guān)系操作符及其功能 50(2) 邏輯操作符邏輯操作符功 能&與|或非邏輯操作符及其功能 51(3) 關(guān)系與邏輯函數(shù) 關(guān)系與邏

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論