MATLAB reshape()函数和sub2ind()函数
題目描述
已知A為4*5的矩陣
12 3 4 7 8
5 6 9 11 13
2 1 15 20 21
10 6 11 8 9
完成如下操作:將A(2,4)的11和A(3, 2)的1刪除后,保持?jǐn)?shù)據(jù)次序不變的情況下,重新整理成3行6列的矩陣數(shù)據(jù)。
輸入
無(wú)
輸出
3行6列的矩陣
提示
使用 reshape()函數(shù),sub2ind()函數(shù)以及“利用空矩陣刪除矩陣元素”
程序代碼
A=[12, 3, 4, 7, 8;5, 6, 9, 11, 13;2, 1, 15, 20, 21;10, 6, 11, 8, 9];B = A(sub2ind(size(A), [1 2 3 4, 1 2 4, 1 2 3 4, 1 3 4, 1 2 3 4], [1 1 1 1, 2 2 2, 3 3 3 3, 4 4 4, 5 5 5 5 ])); C = reshape(B, 3, 6); disp(num2str(C));sub2ind()函數(shù)
將下標(biāo)轉(zhuǎn)換為線性索引
ind = sub2ind(sz,row,col)- 針對(duì)大小為 sz 的矩陣返回由 row 和 col 指定的行列下標(biāo)的對(duì)應(yīng)線性索引 ind。
- 此處,sz 是包含兩個(gè)元素的向量,其中 sz(1) 指定行數(shù),sz(2) 指定列數(shù)。
首先創(chuàng)建了一個(gè)矩陣A,一個(gè)4行5列的矩陣,size(A)為獲得A矩陣的行數(shù)和列數(shù),sub2ind第二和第三個(gè)參數(shù)都是用矩陣表示的,兩個(gè)矩陣對(duì)應(yīng)的元素代表A中某個(gè)元素的行下標(biāo)和列下標(biāo)。
例如:要獲取 A(2,4)的11和A(3, 2)的1的行下標(biāo)和列下標(biāo)。
- A(2, 4):行下標(biāo)為2,列下標(biāo)為4的元素對(duì)應(yīng)的是11,對(duì)應(yīng)的索引序號(hào)為 14
- A(3, 2):行下標(biāo)為3,列下標(biāo)為2的元素對(duì)應(yīng)的是1,對(duì)應(yīng)的索引序號(hào)為 7
注:
- MATLAB是按列搜索的,先搜索第一列,然后搜索第二列…。同理A中的第2行第5個(gè)的索引號(hào)為18,后面依次類推。
- 行下標(biāo),指定為標(biāo)量、向量、矩陣或多維數(shù)組。row 的大小必須與 col 的大小相同。
如何取出A中A(2, 4),A(3, 2),輸入以下代碼即可:
B = A(sub2ind(size(A), [2 3], [4 2]));
如果要用 sub2ind()函數(shù)刪除 A(2, 4),A(3, 2)即選取出A(2, 4),A(3, 2)以外的元素,那么輸入以下代碼即可:
reshape()函數(shù)
如果需要改變矩陣的形狀,reshape(A,m,n)表示矩陣總元素保持不變的前提下,將矩陣A重新排列為m*n的矩陣。
reshape()函數(shù)只改變矩陣的行數(shù)和列數(shù),但并不改變?cè)仃囋貍€(gè)數(shù)及其存儲(chǔ)順序。
使用reshape()函數(shù)將B轉(zhuǎn)換成 3行6列的矩陣
參考:https://ww2.mathworks.cn/help/matlab/ref/sub2ind.html?searchHighlight=sub2ind&s_tid=doc_srchtitle
總結(jié)
以上是生活随笔為你收集整理的MATLAB reshape()函数和sub2ind()函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Raspberry Pi 4B 循迹模块
- 下一篇: QT 调用QWebEngineView显