生成哈達瑪矩陣

2021-08-18 04:52:31 字數 579 閱讀 4225

哈達瑪(hadamard)矩陣是由+1和-1元素構成的正交方陣。所謂正交方陣,指它的任意兩行(或兩列)都是正交的,且任意一行(列)的所有元素的平方和等於方陣的階數。即:設a為n階由+1和-1元素構成的方陣,若aa『=ni(這裡a』為a的轉置,i為單位方陣),則稱a為n階hadamard矩陣。

已有人證明,hadamard矩陣的階數都是4的倍數。

本人使用哈達瑪矩陣是在壓縮感知中知道的,在壓縮中進行快速哈達瑪變換(沃爾什函式)的變換以後就可以進行影象壓縮,之後在運用tval3演算法就可以進行乙個解壓縮,來還原原來的影象。現在的壓縮比基本都在10%之下。

這裡的m和n表示矩陣的大小。

#include 

#define m 32

#define n 32

int hadamard[m][n];

//生成哈達瑪矩陣的函式

int createhadmard(int i, int j)

if (result % 2 == 0)

else

}int main()

printf("\n");

}}

快速哈達瑪變換

在生成哈達瑪矩陣的文章中我已經提到了沃爾什函式,其實也就是快速哈達瑪變換,他是針對與壓縮感知中壓縮過程中對哈達瑪矩陣的行進行乙個變換,這麼做可以更好的壓縮影象,並更好的進行解壓。簡單的實現就是寫成二進位制表示沒然後儲存反向格雷碼就是新矩陣所對應的行號。include include define m...

螺旋矩陣生成

螺旋矩陣i 按螺旋順序返回矩陣所有元素 可以模擬螺旋矩陣的路徑。初始位置是矩陣的左上角,初始方向是向右,當路徑超出界限或者進入之前訪問過的位置時,順時針旋轉,進入下乙個方向。判斷路徑是否進入之前訪問過的位置需要使用乙個與輸入矩陣大小相同的輔助矩陣visited,其中的每個元素表示該位置是否被訪問過。...

matlab生成隨機矩陣

一 matlab 裡和隨機數有關的函式 1 rand 產生均值為 0.5 幅度在 0 1之間的偽隨機數 2 randn 產生均值為 0 方差為 1的高斯白雜訊 3 randperm n 產生1 到n的均勻分布隨機序列 4 normrnd a,b,c,d 產生均值為 a 方差為 b大小為 cxd的隨機...