MATLAB--reshape的妙用
? ? 最近一段時(shí)間晌纫,都在使用MATLAB做信號處理岗屏,由于實(shí)驗(yàn)測量要求禽捆,有大量的數(shù)據(jù)需要進(jìn)行拼接成接近512或2014個(gè)點(diǎn)后進(jìn)行傅里葉變化藐石,對于我這種基本沒用過MATLAB的小白來說,將一個(gè)二維的矩陣轉(zhuǎn)換成三維矩陣吨悍,我首先想到的就是用三層循環(huán)去拼接扫茅,直到那天看到之前一個(gè)師兄留下來的代碼,發(fā)現(xiàn)他只用了一行代碼就實(shí)現(xiàn)了我的三層循環(huán)才做到的內(nèi)容畜份,他就是利用了reshape這個(gè)函數(shù)诞帐。
我去專門學(xué)習(xí)了一下關(guān)于reshape
Matlab中關(guān)于reshape函數(shù)的調(diào)用有兩種,一種是B = reshape(A,[m,n]);其意為將A矩陣轉(zhuǎn)換為m行n列的矩陣B爆雹,這種必須要確保m*n的數(shù)值與A中元素的個(gè)數(shù)相同停蕉。例如下圖所示的示例:
值得注意的是,reshape在進(jìn)行矩陣的換維時(shí)钙态,都是按矩陣的一列進(jìn)行變換慧起,比如下面這個(gè)例子,從A的第一列開始册倒,形成的也是B的第一列蚓挤。
同樣,對于二維的矩陣我們也可以轉(zhuǎn)換稱三維的驻子,比如下面的例子:
這樣對于數(shù)據(jù)的降維與增維是特別方便的灿意,而且能夠很大的提高代碼的時(shí)間復(fù)雜度,新技能get.