數(shù)值數(shù)組及其運(yùn)算_第1頁
數(shù)值數(shù)組及其運(yùn)算_第2頁
數(shù)值數(shù)組及其運(yùn)算_第3頁
數(shù)值數(shù)組及其運(yùn)算_第4頁
數(shù)值數(shù)組及其運(yùn)算_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余49頁可下載查看

下載本文檔

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

文檔簡介

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

2、4,2.2 一維數(shù)組的創(chuàng)建和尋訪,2.2.1 一維數(shù)組的創(chuàng)建 (1)逐個元素輸入法 x=2 pi/2 sqrt(3) 3+5i x = 2.0000 1.5708 1.7321 3.0000 + 5.0000i,5,(2) 冒號成長法 這是通過“步長”設(shè)定,生成一維“行”數(shù)組的方法。 x=a:inc:b a是數(shù)組的第一個元素;inc是采樣點之間的間隔,即步長。若(b-a)是inc的整數(shù)倍,則所生成的最后一個元素等于b,否則小于b。,6,(3)定數(shù)線形采樣法 該法在設(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,7,2.2.2 一維數(shù)組的子數(shù)組尋訪和賦值 (1)子數(shù)組的尋訪 x(index) 尋找什么樣的子數(shù)組,取決于下標(biāo)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.8913,8,(2)子數(shù)組的賦值 eg: x(3)=0 x = 0.

4、9501 0.2311 0 0.4860 0.8913 x(1 4)=1 1 x = 1.0000 0.2311 0 1.0000 0.8913,9,2.3 二維數(shù)組的創(chuàng)建,2.3.1 直接輸入法 規(guī)則: 整個輸入數(shù)組必須用 括住 數(shù)組元素必須用逗號或空格分隔 在 內(nèi)數(shù)組的行與行之間必須用分號分隔或按Enter鍵分割,10,數(shù)組元素可以是數(shù)字或任何matlab表達(dá)式 ,表達(dá)式不可包含未知的變量;可以是實數(shù) ,也可以是復(fù)數(shù),復(fù)數(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

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

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

7、al(L) %判斷L是否是邏輯值數(shù)組 ans = 1 x=A(L) %把L中邏輯值為1對應(yīng)的A元素取出 x = -4 4 5,15,2.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 30 A(s)=Sa,ans = 2 3 5 Sa = 10 20 30 A = 1 20 30 7 10 4 6 8 A(:,2 3)=ones(2) A = 1 1 1 7 10 1 1 8,例:不同賦值方式示例。,同一維數(shù)組的子數(shù)組尋訪和賦

8、值的方法,16,2.6 執(zhí)行數(shù)組運(yùn)算的常用函數(shù),17,2.7 數(shù)組運(yùn)算和矩陣運(yùn)算,從外觀形狀和數(shù)據(jù)結(jié)構(gòu)上看,二維數(shù)組和(數(shù)學(xué)中的)矩陣沒有區(qū)別。但是,矩陣作為一種變換或映射算子的體現(xiàn),矩陣運(yùn)算有著明確的數(shù)學(xué)規(guī)則;數(shù)組運(yùn)算是MATLAB軟件所定義的規(guī)則,其目的是為了數(shù)據(jù)管理方便、操作簡單、指令形式自然和執(zhí)行計算的有效。雖然數(shù)組運(yùn)算尚缺乏嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)推理,數(shù)組運(yùn)算本身仍在完善和成熟中。,18,19,1. 直接輸入矩陣的創(chuàng)建 規(guī)則: 矩陣元素必須用 括住 矩陣元素必須用逗號或空格分隔 在 內(nèi)矩陣的行與行之間必須用分號分隔或按Enter鍵分割,20,矩陣的修改, 直接修改 可用鍵找到所要修改的矩陣,用鍵

9、移動到要修改的矩陣元素上即可修改。 指令修改 可以用A(,)= 來修改。,21,例如 a=1 2 0;3 0 5;7 8 9 a =1 2 0 3 0 5 7 8 9 a(3,3)=0 a =1 2 0 3 0 5 7 8 0,22,2.用matlab函數(shù)創(chuàng)建和修改矩陣,Matlab提供了大量的函數(shù)來創(chuàng)建一些常用的特殊矩陣,例如對角陣、單位陣和零矩陣 例1:0-1分布的隨機(jī)矩陣,利用rand函數(shù)產(chǎn)生任意行列的隨機(jī)矩陣 a=rand(5,5),23,例2 利用diag產(chǎn)生對角陣 diag(M)M為矩陣或向量,對于矩陣,取對角元產(chǎn)生一個列向量;對于向量則產(chǎn)生一個對角陣, a=rand(5,5) a

10、 = 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.8801 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 =

11、0.7027 0.9568 0.2523 0.1991 0.9883,24,Matlab中用于產(chǎn)生特殊矩陣的函數(shù),zeros(m,n) mn的零矩陣,全部元素都為0 ones(m,n) 全部元素都為1的mn的矩陣 rand(m,n) 隨機(jī)矩陣 eye(m,n) 單位矩陣 magic(n) n維magic方陣 空陣 matlab允許輸入空陣,當(dāng)一項操作無結(jié)果時,返回空陣。,25,還有伴隨矩陣、稀疏矩陣、范德蒙等矩陣的創(chuàng)建等等 注意:matlab嚴(yán)格區(qū)分大小寫字母,因此a與A是兩個不同的變量。 matlab函數(shù)名必須小寫。,26,3 矩陣的基本數(shù)值運(yùn)算,(1)矩陣加、減法運(yùn)算 規(guī)則: 相加、減的兩

12、矩陣必須有相同的行和列兩矩陣對應(yīng)元素相加減。 允許參與運(yùn)算的兩矩陣之一是標(biāo)量。標(biāo)量與矩陣的所有元素分別進(jìn)行加減操作。,27,(2) 矩陣乘()運(yùn)算 規(guī)則: A矩陣的列數(shù)必須等于B矩陣的行數(shù) 例a=1 2 3;4 5 6;7 8 0;b=1;2;3;c=a*b c =14 32 23 標(biāo)量可與任何矩陣相乘 例 d=-1;0;2;f=pi*d f = -3.1416 0 6.2832,28,在matlab中矩陣除的運(yùn)算有兩種矩陣除運(yùn)算,MATLAB用“/” 代表右除(常用除法)和“”左除運(yùn)算。這兩種運(yùn)算的差別如下: 例如:2/5 表示0.4, 25 表示2.5; 對于矩陣, A/B 表示AB-1,

13、即A*inv(B); BA 表示B-1A,即inv(B)*A。 矩陣除法可以看作矩陣乘法的逆運(yùn)算,(3) 矩陣除運(yùn)算,29,例左除解方程組ax=b的解 :x=ab, a=rand(5); %產(chǎn)生(5*5)的均勻分布隨機(jī)矩陣 b=ones(5,1); %產(chǎn)生全為1的5元列向量 x1=inv(a)*b x1 = -0.1734 0.5573 0.0309 0.7208 0.8147 x2=ab x2 = -0.1734 0.5573 0.0309 0.7208 0.8147,30,a p a 自乘p次冪,方陣,1的整數(shù),(4) 矩陣乘方 an,ap,pa,對于p的其它值,計算將涉及特征值 和特征向

14、量,如果p是矩陣,a是標(biāo)量 ap使用特征值和特征向量自乘到p次 冪;如a,p都是矩陣,ap則無意義。,31,a=1,2,3;4,5,6;7,8,9;a2 ans =30 36 42 66 81 96 102 126 150,當(dāng)一個方陣有復(fù)數(shù)特征值或負(fù)實特征值時,非整數(shù)冪是復(fù)數(shù)陣。,32,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

15、.2717i,33,inv 矩陣求逆 size 矩陣的大小(行列數(shù)) det 行列式的值 eig 矩陣的特征值 rank 矩陣的秩 矩陣轉(zhuǎn)置 sqrt 矩陣開方 svd矩陣的奇異值分解,(5) 矩陣的其它運(yùn)算,34,(6)矩陣的一些特殊操作,矩陣的變維 a=1:12;b=reshape(a,3,4) c=zeros(3,4);c(:)=a(:) 矩陣的變向 rot90:旋轉(zhuǎn); fliplr:上翻; flipud:下翻 矩陣的抽取 diag:抽取主對角線;tril: 抽取主下三角; triu:抽取主上三角,35,2.8 數(shù)組構(gòu)作技法綜合,賦值擴(kuò)展法 A=reshape(1:9,3,3) A =

16、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 0 0 222 0 0 0 0 0 222 0 0 0 0 111 222 多次尋訪擴(kuò)展法 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

17、 0 0 0 0 222 0 0 0 0 111 222 0 0 0 0 111 222,合成擴(kuò)展法 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 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

18、0 0 0 111 222 1 1,(1)數(shù)組的擴(kuò)展,36,(2)單下標(biāo)尋訪和reshape 指令演示 clear A=reshape(1:16,2,8) 變一維數(shù)組為(28)數(shù)組 A = 1 3 5 7 9 11 13 15 2 4 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; 定義單下標(biāo)數(shù)組 A(s)=0 對元素賦值 A = 0 0 5 7 0 0 13 15 2 4 0 0 10 12 0 0,37,(3)邏輯函數(shù)的運(yùn)用 R=randn(3

19、,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.4297 -0.9649 -0.7443 1.1091 -0.2698 L=abs(R)1.5 % 不等式條件運(yùn)算,結(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”對應(yīng)的元素賦0值 R = 0.8644 0.8735 -1.1027 0 -0.5523 -0.6149 0 0 0 0 -0.8197

20、0 -0.8519 0 -0.9649 -0.7443 1.1091 0 s=(find(R=0) %利用find獲得符合關(guān)系等式條件的元素的“單下標(biāo)” s = 2 5 6 8 10 11 17 18 R(s)=111 利用“單下標(biāo)”定位賦值 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); %利用fin

21、d獲得符合關(guān)系等式條件的元素的“雙下標(biāo)” disp(ii),disp(jj) 2 2 3 2 1 2 2 3 1 2 2 3 4 4 6 6,38,2.9 高維數(shù)組,2.9.1 高維數(shù)組的創(chuàng)建 方法: 直接通過“全下標(biāo)”元素賦值方法 由若干相同的低維數(shù)組合成 由函數(shù)ones,zeros,rand,randn直接創(chuàng)建 借助cat,repmat,reshape等函數(shù)構(gòu)作,39,【例1】“全下標(biāo)”元素賦值方式創(chuàng)建高維數(shù)組演示。 A(2,2,2)=1 A(:,:,1) = 0 0 0 0 A(:,:,2) = 0 0 0 1 B(2,5,:)=1:3 B(:,:,1) = 0 0 0 0 0 0 0

22、0 0 1 B(:,:,2) = 0 0 0 0 0 0 0 0 0 2 B(:,:,3) = 0 0 0 0 0 0 0 0 0 3,40,【例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 1 A(:,:,2) = 2 2 2 2 2 2 A(:,:,3) = 3 3 3 3 3 3,41,【例3】由函數(shù)ones, zeros, rand, randn直接創(chuàng)建標(biāo)準(zhǔn)高維數(shù)組的示例。 rand(2,4,3) ans(:,:,1) = 0.6278 0.

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

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

25、5 7 6 8 ans(:,:,3) = 9 11 10 12,43,2.9.2 高維數(shù)組的標(biāo)識 (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 = 3 size_A = 2 3 4 L_A = 4,44,2.10 “非數(shù)”和“空”數(shù)組,2.10.1 非數(shù) NaN,根據(jù)IEEE數(shù)學(xué)標(biāo)準(zhǔn),0/0,0/, 0* 等運(yùn)算都會產(chǎn)生非數(shù)( Not a Number )。該非數(shù)在MATLAB中用NaN或nan記述。 性質(zhì): (1) NaN參與運(yùn)算所得的結(jié)果也是NaN,即具有傳遞性 (2)非數(shù)沒有大小的概念,即兩個非數(shù)不能比較大小。,45,非數(shù)的功能 (1)真實記述0/0,0/,

溫馨提示

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

最新文檔

評論

0/150

提交評論