MATLAB程序設(shè)計(jì)語言(2)課件_第1頁
MATLAB程序設(shè)計(jì)語言(2)課件_第2頁
MATLAB程序設(shè)計(jì)語言(2)課件_第3頁
MATLAB程序設(shè)計(jì)語言(2)課件_第4頁
MATLAB程序設(shè)計(jì)語言(2)課件_第5頁
已閱讀5頁,還剩81頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、MATLAB程序設(shè)計(jì)語言(2)1 MATLAB 程序設(shè)計(jì)語言 (講師) Email: 研究方向:無線通信 MATLAB程序設(shè)計(jì)語言(2)2 Chapter6 數(shù)據(jù)陣列類型與結(jié)構(gòu) 多維陣列 結(jié)構(gòu)陣列 單元陣列 復(fù)雜陣列結(jié)構(gòu) 多維陣列、結(jié)構(gòu)陣列和單元陣列函數(shù) MATLAB程序設(shè)計(jì)語言(2)3 6.1 多維陣列 多維陣列 建立多維陣列 多維陣列信息 多維陣列的使用 多維陣列計(jì)算 多維陣列的數(shù)據(jù)組織 MATLAB程序設(shè)計(jì)語言(2)4 6.1.1-2 多維陣列及其建立 多維陣列是二維矩陣的推廣 多維陣列使用3個(gè)以上的下標(biāo)來訪問 多維陣列的建立: 1. 利用下標(biāo)建立多維陣列; 2. 利用matlab函數(shù)產(chǎn)

2、生多維陣列; 3. 利用cat函數(shù)建立多維陣列; 4. 用戶自己編寫M文件產(chǎn)生多維陣列。 MATLAB程序設(shè)計(jì)語言(2)5 利用下標(biāo)建立多維陣列 例6.1 有兩個(gè)二維矩陣A和B A = B = 1 2 3 11 12 13 4 5 6 14 15 16 可以很容易地構(gòu)造一個(gè)三維矩陣C : C (:,:,1 ) = A; C (:,:,2 ) = B; 給出: C (:,:,1 )= C (:,:,2 ) = 1 2 3 11 12 13 4 5 6 14 15 16 MATLAB程序設(shè)計(jì)語言(2)6 利用matlab函數(shù)產(chǎn)生多維陣列 利用rand, randn, ones, zeros產(chǎn)生多維

3、陣列,且 在函數(shù)調(diào)用時(shí)指定每一維的尺寸。 例6.2 輸入R = randn(3, 4, 2), 給出: R(:,:,1) = 0.4694 -0.6275 -0.2037 1.5929 -0.9036 0.5354 -2.0543 1.0184 0.0359 0.5529 0.1326 -1.5804 R(:,:,2) = -0.0787 -1.2344 0.0558 0.3710 -0.6817 0.2888 -0.3679 0.7283 -1.0246 -0.4293 -0.4650 2.1122 另外,A = ones(4,3,2); B = repmat(3, 3,2,2); MATL

4、AB程序設(shè)計(jì)語言(2)7 利用cat函數(shù)建立多維陣列 可將任何兩個(gè)維數(shù)適當(dāng)?shù)年嚵邪粗付ňS數(shù)進(jìn)行連接, 從而產(chǎn)生更高維陣列 例例6.3 A = B = 1 2 5 6 3 4 7 8 C = cat(1, A, B) C = 1 2 3 4 5 6 7 8 C = cat(2, A, B) C = 1 2 5 6 3 4 7 8 C = cat(3, A, B) C(:,:,1) = 1 2 3 4 C(:,:,2) = 5 6 7 8 MATLAB程序設(shè)計(jì)語言(2)8 6.1.3 多維陣列信息 ndims 獲得多維陣列維數(shù) size 得到陣列各維的尺寸 whos 得到陣列的存儲和格式 MATL

5、AB程序設(shè)計(jì)語言(2)9 6.1.4 多維陣列的使用(P269) 下標(biāo)訪問技術(shù) 陣列重新排列 陣列的序列變換 MATLAB程序設(shè)計(jì)語言(2)10 6.1.5 多維陣列計(jì)算 面向向量的函數(shù): sum, mean, cross 面向元素的函數(shù): 三角函數(shù)、指數(shù)函數(shù)等 (可按對二維陣列的操作方式對多維陣列處理) 算術(shù)、邏輯和關(guān)系運(yùn)算符 面向矩陣的函數(shù): 線性代數(shù)函數(shù)和矩陣函數(shù) MATLAB程序設(shè)計(jì)語言(2)11 6.1.6 多維陣列的數(shù)據(jù)組織 多維陣列可表示兩類數(shù)據(jù):多維陣列可表示兩類數(shù)據(jù): 表示成二維數(shù)據(jù)的平面或頁,可將頁當(dāng) 作矩陣處理; 表示成多變量或多維數(shù)據(jù)。(例P272) MATLAB程序設(shè)

6、計(jì)語言(2)12 6.2 結(jié)構(gòu)陣列 結(jié)構(gòu)陣列由多個(gè)域構(gòu)成,每個(gè)域可以存放 各種類型的數(shù)據(jù),例如,第一個(gè)域?yàn)橛米址?表示的學(xué)生名字,第二個(gè)域?yàn)橛脴?biāo)量表示的學(xué) 生學(xué)號,第三個(gè)域?yàn)閿?shù)值矩陣表示的學(xué)生成績。 MATLAB程序設(shè)計(jì)語言(2)13 6.2.1 建立結(jié)構(gòu)陣列 利用賦值語句,對結(jié)構(gòu)陣列的各個(gè)域進(jìn) 行賦值。 例: = Zhang San; student.number = 001; student.score = 81 79 92 85 94 71; MATLAB程序設(shè)計(jì)語言(2)14 6.2.1 建立結(jié)構(gòu)陣列 利用struct函數(shù)建立結(jié)構(gòu)陣列 例: student1

7、= struct (name, Zhang San, number, 001, score, 81 79 92 85 94 71) 例:ex1.m MATLAB程序設(shè)計(jì)語言(2)15 6.2.2 結(jié)構(gòu)陣列數(shù)據(jù)的使用 在結(jié)構(gòu)陣列中,利用結(jié)構(gòu)名后的括號指示第n 個(gè)結(jié)構(gòu)元素,利用句點(diǎn)引出域名指示相應(yīng)的域。 str = student(1).name; 可采用循環(huán)得到多個(gè)域的值。 getfield, setfield getfield(student,2,name) student=setfield(student,2, number,003) MATLAB程序設(shè)計(jì)語言(2)16 6.2.3 結(jié)構(gòu)陣列

8、應(yīng)用于函數(shù)和操作符 例:mean (student(1).score) ans = 83.6667 MATLAB程序設(shè)計(jì)語言(2)17 6.2.4 結(jié)構(gòu)陣列的數(shù)據(jù)組織(p277) 平面組織:結(jié)構(gòu)的每個(gè)域是整個(gè)圖像平面 優(yōu)點(diǎn):易擴(kuò)展到多個(gè)平面或圖像 缺點(diǎn):訪問平面的子集比較麻煩 元素對元素組織: 優(yōu)點(diǎn):方便訪問數(shù)據(jù)的子集 缺點(diǎn):要采用循環(huán)建立結(jié)構(gòu),且訪問平面數(shù) 據(jù)麻煩 MATLAB程序設(shè)計(jì)語言(2)18 6.2.5 結(jié)構(gòu)嵌套 結(jié)構(gòu)嵌套結(jié)構(gòu)嵌套:在結(jié)構(gòu)陣列中,其域值可以是另一個(gè)已經(jīng)定義過 的結(jié)構(gòu) 例: n = cour1, cour2, cour3; r = 88 65 79; student =

9、 struct (name, Zhang San, number, 001, course, struct(name,n,score,r) 執(zhí)行后: student = name: Zhang San number: 001 course: 1x3 struct MATLAB程序設(shè)計(jì)語言(2)19 6.3 單元陣列 Matlab允許將不同類型的陣列組合成一個(gè)新 的陣列,這一陣列稱之為單元陣列單元陣列。單元陣列中 的每個(gè)單元可以是標(biāo)量、向量、矩陣、多維陣列、 字符陣列、結(jié)構(gòu)陣列等。(P282 圖6.6) MATLAB程序設(shè)計(jì)語言(2)20 6.3.1 建立單元陣列 建立單元陣列有兩種方法: n使

10、用賦值語句 n使用cell函數(shù)預(yù)分配陣列,然后再對單 元賦值 MATLAB程序設(shè)計(jì)語言(2)21 利用賦值語句建立單元陣列 使用花括號對單元陣列進(jìn)行賦值,花括號可以 用在賦值語句的左邊,也可以用在右邊。 A1,1 = 1 2 3; 4 5 6; 7 8 9; 或 A(1,1) = 1 2 3; 4 5 6; 7 8 9; A1,2 = Tom; 或 A(1,2) =Tom; MATLAB程序設(shè)計(jì)語言(2)22 利用cell函數(shù)定義單元陣列 使用cell函數(shù)預(yù)分配陣列,然后再對單元 賦值 B = cell(2,3) B = B(1,2)=1:4 MATLAB程序設(shè)計(jì)語言(2)23 6.3.2 單

11、元陣列數(shù)據(jù)的使用 利用單元陣列的下標(biāo)可訪問單元陣列元素 A1,1 = 1 2 3; 4 5 6; 7 8 9; A1,2 = Tom; A2,1 = 3+7*i; A2,2 = -pi:pi/10:pi; c = A2,1 c = 3.0000 + 7.0000i c = A1,1(2,3) c = 6 MATLAB程序設(shè)計(jì)語言(2)24 6.3.2 單元陣列數(shù)據(jù)的使用 從已定義單元陣列中取一部分構(gòu)成新單元陣列 A2,3 = hello A = 3x3 double Tom 3.0000+ 7.0000i 1x21 double hello B=A(1:2,2:3) B = Tom 1x21

12、double hello 刪除元素 A2,3 = % 刪除A中的(2,3)的元素 A(:,3) = % 刪除A中的第三列元素 MATLAB程序設(shè)計(jì)語言(2)25 6.3.3 利用單元陣列取代變量列表 在花括號中采用”:”操作符指示多個(gè)單元,則相當(dāng)于指示多 個(gè)獨(dú)立的單元內(nèi)容 A1:3 %單元陣列A中第1個(gè)到第3個(gè)元素 ans = 1 2 3 4 5 6 7 8 9 ans = 3.0000 + 7.0000i ans = Tom D1:2=eig(B) %求矩陣的特征向量和特征值 MATLAB程序設(shè)計(jì)語言(2)26 6.3.4 單元陣列應(yīng)用于函數(shù)和操作符 利用下標(biāo)將函數(shù)和操作符應(yīng)用于單元陣列 m

13、 = prod(A1,1) m = 28 80 162 l = (abs(A1,1)=3) l = 0 0 1 1 1 1 0 0 0 MATLAB程序設(shè)計(jì)語言(2)27 6.3.5 單元陣列的數(shù)據(jù)組織 單元陣列對組織具有不同尺寸或類型的數(shù) 據(jù)是非常有用的,它比結(jié)構(gòu)更具包容性,可應(yīng) 用于:(p287) w利用一條語句訪問多個(gè)數(shù)據(jù)域 w利用逗號間隔的變量表訪問數(shù)據(jù)子集 w不具備固定的域名 w經(jīng)常從結(jié)構(gòu)中刪除域名 MATLAB程序設(shè)計(jì)語言(2)28 6.3.6 嵌套單元陣列 一個(gè)單元陣列中可以包含另一個(gè)單元陣列, 甚至可包含單元陣列的陣列,稱之為單元陣列單元陣列 的嵌套的嵌套 w建立單元陣列的嵌套

14、: 嵌套的花括號、cell函數(shù)、賦值語句。 例6.4 利用嵌套的花括號建立嵌套單元陣列 例6.5 利用cell函數(shù)建立嵌套單元陣列 MATLAB程序設(shè)計(jì)語言(2)29 6.3.7 單元陣列與數(shù)值陣列之間的變換 采用循環(huán)程序?qū)崿F(xiàn)轉(zhuǎn)換 MATLAB程序設(shè)計(jì)語言(2)30 6.4 復(fù)雜陣列結(jié)構(gòu) 多維單元陣列 多維結(jié)構(gòu)陣列 結(jié)構(gòu)的單元陣列 MATLAB程序設(shè)計(jì)語言(2)31 6.4.1 多維單元陣列 借助cat函數(shù)連接產(chǎn)生 A1,1 = 1 2 3; 4 5 6; 7 8 9; A1,2 = Tom; A2,1 = 3+7*i; A2,2 = -pi:pi/10:pi; B1,1 = hello; B

15、1,2 = 6; B2,1 = 1:3; B2,2 = 2 4; MATLAB程序設(shè)計(jì)語言(2)32 6.4.1 多維單元陣列 C = cat(3, A, B) C(:,:,1) = 3x3 double Tom 3.0000+ 7.0000i 1x21 double C(:,:,2) = hello 6 1x3 double 1x2 double MATLAB程序設(shè)計(jì)語言(2)33 6.4.2 多維結(jié)構(gòu)陣列 直接賦值或cat函數(shù)產(chǎn)生 例: student(1,1,1).name = Tom; student(1,1,1).number = 001; student(1,1,1).score

16、= 81 79 92 85 94 71; student(1,1,2).name = Joe; student(1,1,2).number = 003; student(1,1,2).score = 64 77 69 84 76 90; MATLAB程序設(shè)計(jì)語言(2)34 6.4.2 多維結(jié)構(gòu)陣列 student = 1x1x2 struct array with fields: name number score avg = sum(student(1,1,2).score)/6 avg = 76.6667 MATLAB程序設(shè)計(jì)語言(2)35 6.4.3 結(jié)構(gòu)的單元陣列 利用單元陣列可將具有

17、不同域結(jié)構(gòu)的結(jié) 構(gòu)陣列存儲在一起。(P293 圖6.10) MATLAB程序設(shè)計(jì)語言(2)36 6.5 多維陣列、結(jié)構(gòu)陣列和單元陣列函數(shù) 多維陣列函數(shù) 結(jié)構(gòu)陣列函數(shù) 單元陣列函數(shù) MATLAB程序設(shè)計(jì)語言(2)37 6.5.1多維陣列函數(shù) cat ndims ndgrid permute ipermute shiftdim squeeze flipdim MATLAB程序設(shè)計(jì)語言(2)38 cat 功能:連接陣列 格式:C = cat(dim,A,B) C = cat(dim,A1,A2,A3,A4.) 說明: 將輸入陣列A,B或A1,A2,A3,A4沿著 dim維連接成C陣列。 cat(2,

18、A,B) = A,B cat(1,A,B) = A;B MATLAB程序設(shè)計(jì)語言(2)39 ndims 功能:求陣列維數(shù) 格式:n = ndims(A) 說明:ndims(x) = length(size(x). MATLAB程序設(shè)計(jì)語言(2)40 ndgrid 功能:為多維函數(shù)和內(nèi)插產(chǎn)生陣列 格式:X1,X2,X3,. = ndgrid(x1,x2,x3,.) X1,X2,. = ndgrid(x) 說明: 可將由向量x1,x2,x3,指定的域變 換成陣列X1,X2,X3,.,用于多變量函數(shù) 的計(jì)算和多維內(nèi)插。 例6.6 MATLAB程序設(shè)計(jì)語言(2)41 permute 功能:多維陣列的序

19、列變換(重新排列) 格式:B = permute(A,order) 說明: 對陣列A按order指定的格式重新排列。 對陣列A,permute(A,2 1)等價(jià)于A。 例6.7 MATLAB程序設(shè)計(jì)語言(2)42 ipermute 功能:多維陣列的逆序列變換 格式:A = ipermute(B,order) 說明:permute函數(shù)逆變換。 例6.8 MATLAB程序設(shè)計(jì)語言(2)43 shiftdim 功能:維數(shù)移位 格式:B = shiftdim(X,n) B,nshifts = shiftdim(X) 說明:當(dāng)n為正數(shù)時(shí), shiftdim(X,n)將X陣列的 維數(shù)向左移動(dòng)n位,最后維回

20、繞至第一維;當(dāng)n 維負(fù)數(shù)時(shí),將X陣列的維數(shù)向右移動(dòng)n維,并在 首維上補(bǔ)零成單點(diǎn)維. B,nshifts = shiftdim(X) 可以刪去首維開始的單點(diǎn)維。 例6.9 MATLAB程序設(shè)計(jì)語言(2)44 squeeze 功能:刪除單點(diǎn)維 格式:B = squeeze(A) 說明:刪除A陣列中的單點(diǎn)維 例6.10 MATLAB程序設(shè)計(jì)語言(2)45 flipdim 功能:陣列沿著指定維翻轉(zhuǎn) 格式:B = flipdim(A,dim) 說明: 沿著dim維翻轉(zhuǎn) flipdim(A,1)等同于 flipud(A) flipdim(A,2)等同于fliplr(A) 例6.11 MATLAB程序設(shè)計(jì)語

21、言(2)46 6.5.2 結(jié)構(gòu)陣列函數(shù) struct fieldnames getfield setfield emfield isfield isstruct MATLAB程序設(shè)計(jì)語言(2)47 struct 功能:建立結(jié)構(gòu)陣列 格式:s = struct(field1,values1,field2,values2,.) 說明:s = struct(field1,values1,field2,values2,.) 可建立具有指定域名及其值的結(jié)構(gòu)陣列,值 陣列values1, values2,必須是相同尺寸的單元陣列 或標(biāo)量單元,值陣列中的元素相應(yīng)地放入結(jié)構(gòu)陣列中。 例:6.12 MATLAB

22、程序設(shè)計(jì)語言(2)48 fieldnames 功能:獲取結(jié)構(gòu)名 格式:f = fieldnames(s) 說明:names = fieldnames(s)可得到結(jié) 構(gòu)陣列s的域名,其結(jié)構(gòu)names為一單位 陣列。 例6.13 MATLAB程序設(shè)計(jì)語言(2)49 getfield 功能:獲取結(jié)構(gòu)陣列的域值。 格式:f = getfield(s,field) f = getfield(s,i,j,field,k) 說明:f = getfield(s,field)可獲得結(jié)構(gòu)陣列s中 指定域的域值,這實(shí)際上等效于 f s.field。 f = getfield(s,i,j,field,k)可獲得結(jié)構(gòu)陣

23、列s 中指定域的域值,這等價(jià)于 f s(i, j).field(k)。 例6.14 MATLAB程序設(shè)計(jì)語言(2)50 setfield 功能:設(shè)置結(jié)構(gòu)陣列的域值 格式:s = setfield(s,field,v) s = setfield(s,i,j,field,k,v) 說明:s = setfield(s,field,v)可將s中指定域的 內(nèi)容設(shè)置成v,這等效于s.field = v。 s = setfield(s,i,j,field,k,v)也可將s中指定 域的內(nèi)容設(shè)置成v,這等效于s(i,j).field(k)v 例6.15 MATLAB程序設(shè)計(jì)語言(2)51 rmfield 功能:

24、刪除結(jié)構(gòu)陣列中的域 格式:s = rmfield(s,field) s = rmfield(s,FIELDS) 說明:s = rmfield(s,field)可從結(jié)構(gòu)陣列 s中刪除指定的域; s = rmfield(s,FIELDS)可一次刪除s中的 多個(gè)域,其中FIELDS為指定域名的字符 陣列或字符串的單元陣列。 MATLAB程序設(shè)計(jì)語言(2)52 isfield 功能:檢測到結(jié)構(gòu)陣列的域名時(shí)為邏輯真 格式:tf = isfield(A,field) 說明:tf = isfield(A,field)中, 當(dāng)指定的field是s的域名時(shí),k為邏輯真 (其值為1)。 例6.16 MATLAB程

25、序設(shè)計(jì)語言(2)53 isstruct 功能:檢測到結(jié)構(gòu)陣列時(shí)為邏輯真。 格式:tf = isstruct(A) 說明:tf = isstruct(A)中,當(dāng)s為結(jié)構(gòu)陣 列時(shí),k為邏輯真。 MATLAB程序設(shè)計(jì)語言(2)54 6.5.3 單元陣列函數(shù) cell celldisp cellplot num2cell struct2cell iscell cellstr deal MATLAB程序設(shè)計(jì)語言(2)55 cell 功能:建立單元陣列 格式:c = cell(n) c = cell(m,n) or c = cell(m n) c = cell(m,n,p,.) or c = cell(m

26、 n p .) c = cell(size(A) 說明: c = cell(n)可產(chǎn)生nn的空單元陣列,當(dāng)n為非標(biāo)量 時(shí),MATLAB給出出錯(cuò)信息。 c = cell(m,n) 和 c = cell(m n)可產(chǎn)生mn的空單元陣列, 變量m,n也必須為標(biāo)量。 c = cell(m,n,p,.) 和c = cell(m n p .)可產(chǎn)生 mnp維的空單元陣列。 c = cell(size(A)可產(chǎn)生與A同維的空單元陣列。 MATLAB程序設(shè)計(jì)語言(2)56 celldisp 功能:顯示單元陣列內(nèi)容 格式:celldisp(C) 說明:celldisp(C)可顯示出單元陣列c的 內(nèi)容。 例6.1

27、8 MATLAB程序設(shè)計(jì)語言(2)57 cellplot 功能:以圖形方式顯示出單元陣列的結(jié)構(gòu) 格式:cellplot(c) cellplot(c,legend) handles = cellplot(.) 說明:cellplot(c)可以以圖形形式表示c的內(nèi)容,填充了顏 色的方塊用于表示陣列和向量的元素,標(biāo)量和短的文本 字串則會直接進(jìn)行顯示。 cellplot(c,legend)中,還可以在單元陣列圖的右邊,給 出圖例文本。 handles = cellplot(c),可在畫出單元陣列圖之外,還得 得到了圖形句柄。 MATLAB程序設(shè)計(jì)語言(2)58 num2cell 功能:數(shù)值陣列變換單元

28、陣列。 格式:c = num2cell(A) c = num2cell(A,dims) 說明:c = num2cell(A)可將陣列A的元素放入 相應(yīng)單元陣列c的位置,c的尺寸與A的相同。 c = num2cell(A,dims)可將陣列A放入單元陣列 c,并將指定維dim放入獨(dú)立的單元。 例6.19 MATLAB程序設(shè)計(jì)語言(2)59 cell2struct 功能:單元陣列變換成結(jié)構(gòu)陣列 格式:s = cell2struct(c,fields,dim) 說明:s = cell2struct(c,fields,dim)可將 單元陣列的指定維轉(zhuǎn)變成域名維fields的 結(jié)構(gòu)s,因此c在dim維的

29、長度必須與域名 的數(shù)目相同。變量fields可以是字符陣列, 也可以是字符的單元陣列。 例6.20 MATLAB程序設(shè)計(jì)語言(2)60 struct2cell 功能:結(jié)構(gòu)陣列變換成單元陣列 格式:c = struct2cell(s) 說明:將mn結(jié)構(gòu)s(有p個(gè)域)變換成 pmn單元陣列c。若s多維,則c具有 尺寸p size(s) 例6.21 MATLAB程序設(shè)計(jì)語言(2)61 iscell 功能:檢測到單元陣列時(shí)為邏輯真 格式:tf = iscell(A) 說明:當(dāng)A為單元陣列時(shí),tf為邏輯真。 MATLAB程序設(shè)計(jì)語言(2)62 cellstr 功能:從字符陣列中建立單元陣列 格式:c =

30、 cellstr(S) 說明:將字符陣列s中的每一行放入c的 獨(dú)立單元中,從而構(gòu)成單元陣列c。 例6.22 MATLAB程序設(shè)計(jì)語言(2)63 deal 功能:輸入分配給輸出 格式:Y1,Y2,Y3,. = deal(X) Y1,Y2,Y3,. = deal(X1,X2,X3,.) 說明: Y1,Y2,Y3,. = deal(X)將單輸入分配為每 一個(gè)輸出,即Y1=X, Y2=X, Y3=X, Y1,Y2,Y3,. = deal(X1,X2,X3,.)等同于 Y1=X1, Y2=X2, Y3=X3, 例6.23 MATLAB程序設(shè)計(jì)語言(2)64 The end MATLAB程序設(shè)計(jì)語言(2)

31、65 例6.4 利用嵌套的花括號建立嵌套單元陣列 A(1,1) = magic(5) A(1,2) = layer 2 1 2; 3 4; -pi pi layer 3 1; A A = 5x5 double 2x2 cell A1,2 ans= layer 2 2x2 double 1x2 double 1x2 cell A1,22,2 ans= layer 3 1 返回返回 MATLAB程序設(shè)計(jì)語言(2)66 例6.5 利用cell函數(shù)建立嵌套單元陣列 A = cell(1,2); A(1,1) = magic(4); A(1,2) = cell(2,2); A1,2(1,1) = lay

32、er 2; A1,2(1,2) = 1 2; 3 4; A1,2(2,1) = -pi pi; A1,2(2,2) = layer 3 1; 結(jié)果同例6.4 返回返回 MATLAB程序設(shè)計(jì)語言(2)67 例6.6 ndgrid 例6.6 計(jì)算函數(shù) 在 , 上的值。 X1,X2 = ndgrid(-2:.4:2, -2:.4:2); Z = X1 .* exp(-X1.2 - X2.2); mesh(Z); 22 12 1 xx y xe 122x 222x 返回返回 MATLAB程序設(shè)計(jì)語言(2)68 例6.7 permute 例6.7.1 A = 1 2; 3 4; permute(A,2

33、1) ans = 1 3 2 4 例6.7.2 X = rand(12,13,14); Y = permute(X,2 3 1); size(Y) ans = 13 14 12 返回返回 MATLAB程序設(shè)計(jì)語言(2)69 例6.8 ipermute a = cat(3, eye(2), 2*eye(2), 3*eye(2) a(:,:,1) = a(:,:,2) = a(:,:,3) = 1 0 2 0 3 0 0 1 0 2 0 3 B = permute(a,3 2 1); C = ipermute(B,3 2 1); isequal(a,C) ans= 1 返回返回 MATLAB程序設(shè)

34、計(jì)語言(2)70 例6.9 shiftdim 例6.9 a = rand(1,1,3,1,2); b,n = shiftdim(a); % b是312維且n=2. c = shiftdim(b,-n); % c = a. d = shiftdim(a,3); % d是12113維. 返回返回 MATLAB程序設(shè)計(jì)語言(2)71 例6.10 squeeze Y = rand(2,1,3); Y = Y(:,:,1) = Y(:,:,2) = Y(:,:,3) = 0.5194 0.0346 0.5297 0.8310 0.0535 0.6711 Z = squeeze(Y); Z = 0.519

35、4 0.0346 0.5297 0.8310 0.0535 0.6711 返回返回 MATLAB程序設(shè)計(jì)語言(2)72 例6.11 flipdim A = 1 4 2 5 3 6 flipdim(A,1) = 3 6 2 5 1 4 返回返回 MATLAB程序設(shè)計(jì)語言(2)73 例6.12 struct s = struct(type,big,little,color,red,x,3 4) 這時(shí)可得到一個(gè)結(jié)構(gòu)陣列S s = 1x2 struct array with fields: type color x 這說明S陣列有三個(gè)域(type, color, x),有兩個(gè)結(jié)構(gòu)元素,可輸入: s(1

36、) s(2) ans = ans = type: big type: little color: red color: red x: 3 x:4 返回返回 MATLAB程序設(shè)計(jì)語言(2)74 例6.13 fieldnames mystr(1,1).name = alice; mystr(1,1).ID = 0; mystr(2,1).name = gertrude; mystr(2,1).ID = 1; n = fieldnames(mystr) n = name ID 返回返回 MATLAB程序設(shè)計(jì)語言(2)75 例6.14 getfield 給定結(jié)構(gòu) mystr(1,1).name = a

37、lice; mystr(1,1).ID = 0; mystr(2,1).name = gertrude; mystr(2,1).ID = 1 然后輸入:f = getfield(mystr,2,1,name) f = gertrude 為列出name域的所有內(nèi)容,可采用循環(huán)程序: for k = 1:2 namek = getfield(mystr,k,1,name); end name name = alice gertrude 返回返回 MATLAB程序設(shè)計(jì)語言(2)76 例6.15 setfield 給定結(jié)構(gòu): mystr(1,1).name = alice; mystr(1,1).ID

38、 = 0; mystr(2,1).name = gertrude; mystr(2,1).ID = 1; 然后輸入: mystr = setfield(mystr,2,1,name,ted); mystr(2,1).name ans = ted 返回返回 MATLAB程序設(shè)計(jì)語言(2)77 例6.16 isfield 給定結(jié)構(gòu) = John Doe; patient.billing = 127.00; patient.test = 79 75 73; 180 178 177.5; 220 210 205; 然后 isfield(patient,billing) ans

39、 = 1 返回返回 MATLAB程序設(shè)計(jì)語言(2)78 例6.18 celldisp C = 1 2 Tony 3+4i; 1 2;3 4 -5 abc; celldisp(C) C1,1 = 1 2 C2,1 = 1 2 3 4 C1,2 = Tony C2,2 = -5 C1,3 = 3.0000+ 4.0000i C2,3 = abc 返回返回 MATLAB程序設(shè)計(jì)語言(2)79 例6.19 num2cel A = fix(20*rand(4,4) A = 19 17 16 18 4 15 8 14 12 9 12 3 9 0 15 8 c = num2cell(A) c = 19 17 16 18

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論