MATLAB程式设计多维阵列

上传人:hao****021 文档编号:245282475 上传时间:2024-10-08 格式:PPT 页数:28 大小:244.99KB
返回 下载 相关 举报
MATLAB程式设计多维阵列_第1页
第1页 / 共28页
MATLAB程式设计多维阵列_第2页
第2页 / 共28页
MATLAB程式设计多维阵列_第3页
第3页 / 共28页
点击查看更多>>
资源描述
,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,MATLAB,程式設計多維陣列,張智星,(Roger Jang),http:/mirlab.org/jang,台大資工系 多媒體檢索實驗室,11-1,多維陣列的定義,在,MATLAB,的資料型態中:,一維陣列稱為向量(,Vectors,),二維陣列稱為矩陣(,Matrices,),維度(,Dimensions,)超過,1,的陣列則均可視為多維陣列(,Multidimesional Arrays,,簡稱,N-D Arrays,)。,二維陣列,(I),二維陣列又簡稱矩陣,具有兩個維度,橫列(,Row,),直行(,Column,),(1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4),直行,橫列,二維陣列,(II),二維陣列可對應至一個,X-Y,二維平面座標,圖示如下:,Y(,行,),X(,列,),三維陣列,(I),將兩個矩陣疊在一起,就形成第三個維度,此第三個維度可稱為頁(,Page,),圖示如下:,(1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,4),(1,1),(1,2),(1,3),(1,4),(2,1),(2,2),(2,3),(2,4),(3,1),(3,2),(3,3),(3,4),頁,行,頁,列,三維陣列,(II),三維陣列可對應至一個,X-Y-Z,三維立體座標,圖示如下:,Z(,頁,),Y(,行,),X(,列,),三維陣列,(III),三維陣列定址,可以,(,列,行,頁,),定之。,以維度為,34,2,的三維陣列為例,其定址方式可圖示如下:,陣列,A,是三維陣列,其中,A(,:,:,1),代表第一頁的二維陣列,,A(,:,:,2),代表第二頁的二維陣列。,四維陣列,四維陣列的第四個維度可視為箱(,Box,),而每個箱是由一個三維陣列所組成,其定址方式為,(,列,行,頁,箱,),。,例如:一個,2235,的四維陣列,可表示成,5,個箱,每個箱都由一個,223,的三維陣列所組成,圖示如下:,依此可類推至,n,維陣列,,n,為任意自然數。,11-2,多維陣列的建立,欲建立一個簡單的多維陣列,可直接由,MATLAB,指令視窗內輸入,範例,11-1,:,mDim01.m,A=1 0 2 5;4 1 8 7;3 2 6 3;,A(:,:,2)=3 5 4 1;2 6 2 1;4 2 3 0,A(:,:,1)=,1 0 2 5,4 1 8 7,3 2 6 3,A(:,:,2)=,3 5 4 1,2 6 2 1,4 2 3 0,多維陣列直接設定 範例,11-2,(I),上例是先建立一個二維陣列,A,,再輸入第二頁的二維陣列,A(,:,:,2),,如此逐頁輸入二維陣列的內容,即可建立三維陣列。,如果直接設定某一個新頁的一個元素值,此時,MATLAB,會將此頁其他未指定之元素直接設定為,0,,範例如下:,多維陣列直接設定 範例,11-2,(II),範例,11-2,:,mDim02.m,A=1 0 2 5;4 1 8 7;3 2 6 3;,A(:,:,2)=3 5 4 1;2 6 2 1;4 2 3 0;,A(2,1,3)=5,A(:,:,1)=,1 0 2 5,4 1 8 7,3 2 6 3,A(:,:,2)=,3 5 4 1,2 6 2 1,4 2 3 0,A(:,:,3)=,0 0 0 0,5 0 0 0,0 0 0 0,純量展開功能,(Scalar Expansion),(I),MATLAB,第五版新增純量展開,(Scalar Expansion),功能,直接設定一個純量給多維陣列的一頁。,承接上述範例,若要將陣列,A,的第二頁所有元素設為,7,,可輸入如下:,純量展開功能,(Scalar Expansion)(II),A(:,:,2)=7,A(:,:,1)=,1 0 2 5,4 1 8 7,3 2 6 3,A(:,:,2)=,7 7 7 7,7 7 7 7,7 7 7 7,A(:,:,3)=,0 0 0 0,5 0 0 0,0 0 0 0,垂直並排多維陣列範例,11-3(I),對於較複雜的多維陣列,可用,cat,指令來建立,其功能為並排數個陣列,並可指定並排時所用的維度,其指令格式如下:,Z=cat(dim,A,B,C),A,、,B,、,C,為陣列,dim,是將,A,、,B,、,C,合併時所用到的維度。(亦即在合併後,此維度的大小會改變。),垂直並排多維陣列範例,11-3(II),欲將矩陣,A,與,B,上下,(,垂直,),並排,範例,11-3,:,cat01.m,A=1 2;3 4;,B=1 0;0 1;,Z=cat(1,A,B)%,數字,1,表示將陣列,A,與,B,上下垂直並排,Z=,1 2,3 4,1 0,0 1,水平並排多維陣列範例,11-4,欲將陣列,A,與,B,左右,(,水平,),並排,範例,11-4,:,cat02.m,A=1 2;3 4;,B=1 0;0 1;,Z=cat(2,A,B)%,數字,2,表示將陣列,A,與,B,左右水平並排,Z=,1 2 1 0,3 4 0 1,陣列堆疊,範例,11-5,將陣列,A,與,B,疊起來,得到一個三維陣列,範例,11-5,:,cat03.m,A=1 2;3 4;,B=1 0;0 1;,Z=cat(3,A,B)%,數字,3,表示將陣列,A,與,B,重疊排成三維陣列,Z(:,:,1)=,1 2,3 4,Z(:,:,2)=,1 0,0 1,cat,自動補齊維度,範例,11-6,所設定的,dim,值比陣列,A,、,B,、,C,的各自原先的維度數,(Dimensionality),還要超出,2,或更多,,MATLAB,會自動補上大小為,1,的維度,此時陣列,Z,的維度變為,2212,範例,11-6,:,cat04.m,A=1 2;3 4;,B=1 0;0 1;,Z=cat(4,A,B)%,數字,4,表示將陣列,A,與,B,放在相鄰的兩箱,Z(:,:,1,1)=,1 3,2 4,Z(:,:,1,2)=,1 2,1 1,亂數陣列,(I),MATLAB,可產生特殊用途的多維陣列,要產生一個維度是,235,的亂數陣列,可用,rand,指令,A=rand(2,3,5),A(:,:,1)=,0.3412 0.7271 0.8385,0.5341 0.3093 0.5681,A(:,:,2)=,0.3704 0.5466 0.6946,0.7027 0.4449 0.6213,亂數陣列,(II),類似的指令,詳見本書第九章矩陣的處理與運算的第二節特殊用途矩陣,A(:,:,3)=,0.7948 0.5226 0.1730,0.9568 0.8801 0.9797,A(:,:,4)=,0.2714 0.8757 0.1365,0.2523 0.7373 0.0118,A(:,:,5)=,0.8939 0.2987 0.2844,0.1991 0.6614 0.4692,11-3,多維陣列的數學運算,許多用於向量和矩陣的數學運算,例如,sum,、,max,、,min,、,mean,等,也都可以用在多維陣列。,在使用這些指令時,我們必須指定這些指令的操作是在哪一個維度。,多維陣列運算 維度指定範例,11-7(I),範例,11-7,:,sum01.m,A=1 1 1 1;2 2 2 2;3 3 3 3;,B=0 0 0 0;1 1 1 1;1 2 3 4;,Z=cat(3,A,B);%,將矩陣,A,B,疊成一個三維陣列,S=sum(Z,1)%,根據第一維度來對元素進行相加,size(S),S(:,:,1)=,6 6 6 6,S(:,:,2)=,2 3 4 5,ans=,1 4 2,多維陣列運算 維度指定範例,11-7(II),上述範例,矩陣,Z,的大小是,342,,,sum(Z,1),是根據第一個維度來進行相加,因此第一個維度值就會被被壓成是,1,,因此,size(S),所傳回的值是,1,4,2,,代表矩陣,S,的大小是,142,sum(Z),的預設相加維度即是,1,,因此,sum(Z),和,sum(Z,1),所得到的結果是一樣的。,多維陣列運算 維度指定範例,11-8(I),對第二個維度進行相加,可見下列範例。,範例,11-8,:,sum02.m,A=1 1 1 1;2 2 2 2;3 3 3 3;,B=0 0 0 0;1 1 1 1;1 2 3 4;,Z=cat(3,A,B);%,將矩陣,A,B,疊成一個三維陣列,S=sum(Z,2)%,根據第二維度來對元素進行相加,size(S),S(:,:,1)=,4,8,12,多維陣列運算 維度指定範例,11-8(II),在上述範例中,,sum(Z,2),是對第二個維度進行相加運算,因此所傳回的矩陣,S,的維度是,312,。,sum(z,3),的結果請依此類推。,S(:,:,2)=,0,4,10,ans=,3 1 2,Quiz,An array Z can be created by the following statements:,What are the sizes of the returned arrays of the following statements?,sum(Z,1),3,4,2,1 4 2,sum(Z,2),3,4,2,3 1 2,sum(Z,3),3,4,2,3 4 1 or 3 4,A=1 1 1 1;2 2 2 2;3 3 3 3;,B=0 0 0 0;1 1 1 1;1 2 3 4;,Z=cat(3,A,B);,sum,的累加,範例,11-9(I),執行,sum(Z),時,如果預設要相加的維度只有單一維度,那麼,sum,指令會對下一個維度進行相加的動作,,sum(sum(Z),將會得到三維陣列,Z,的每一頁的總和。,sum(sum(sum(Z),或,sum(Z(:,),可得到,三維陣列,Z,的總和。,sum,的累加,範例,11-9(II),範例,11-9,:,sumSum01.m,與,sum,類似的指令還有,max,、,min,、,mean,、,median,、,mode,、,std,、,diff,、,sort,等,可以參考第九章的第三小節矩陣的數學運算。,A=1 1 1 1;2 2 2 2;3 3 3 3;,B=0 0 0 0;1 1 1 1;1 2 3 4;,Z=cat(3,A,B);%,將矩陣,A,B,疊成一個三維陣列,S=sum(sum(Z),S(:,:,1)=,24,S(:,:,2)=,14,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!