導航:首頁 > 源碼編譯 > iht演算法

iht演算法

發布時間:2023-03-30 12:06:27

① 求助各位高手,想做一個excel表格,用公式自動計算投資的盈虧情況,請問如何實現

可以在買入的價格使用負數表示,然後用數據透視表進行自動計算

壓縮感知理論基本介紹

姓名:王鑫磊

學號:21011110262

學院:通信工程學院

【嵌牛導讀】壓縮感知是信號處理領域進入21世紀以來取得的最耀眼的成果之一,並在磁共振成像、圖像處理等領域取得了有效應用。壓縮感知理論在其復雜的數學表述背後蘊含著非常精妙的思想。基於一個有想像力的思路,輔以嚴格的數學證明,壓縮感知實現了神奇的效果,突破了信號處理領域的金科玉律——奈奎斯特采樣定律。即,在信號采樣的過程中,用很少的采樣點,實現了和全采樣一樣的效果。

【嵌牛鼻子】壓縮感知,欠采樣,稀疏恢復

【嵌牛提問】壓縮感知相比奈奎斯特采樣定律的主要突破是什麼?

【嵌牛正文】

1.CS的初步理解

    CS是一個針對信號采樣的技術,是在采樣過程中完成數據壓縮的過程。我們知道在對模擬信號按一定采樣頻率進行采樣並得到數字信號的過程中,要想完整保留原始信號中的信息,采樣頻率必須大於信號中最高頻率的2倍(奈奎斯特采樣定理)。但Candes等人又提出了,如果信號在頻域是稀疏的,那麼它可以由遠低於采樣定理要求的采樣點重建恢復。Nyquist定理中的采樣為等間距采樣,若采樣頻率低必然會引起混疊,如果不等間距采樣呢?如果是隨機采樣呢?隨機采樣必然會發生頻譜泄露,但泄露會均勻分布在整個頻域且泄露值都較小,而最大的幾個峰值可以通過設置閾值檢測出來,從而有了恢復出原始信號的可能。

    圖1展示了一原始的模擬信號在頻域是稀疏的,僅由三個頻率分量組成,為了得到數字信號,首先要在時域對其進行采樣,根據壓縮感知理論,可以在時域進行隨機亞采樣,之後得到的頻譜會產生如圖所示的泄露,但可以通過閾值檢測求出原始信號的真實頻率分量,從而恢復出原始信號。

2. CS的數學模型

    CS有兩個前提條件:

假設:x是長度為N的原信號,稀疏度為k,它是未知的;Φ為測量矩陣,對應采樣過程,也就是壓縮的過程,如隨機采樣,是已知的;采樣後的結果為:y=Φx,也是已知的;因此壓縮感知問題是:在已知測量值y和測量矩陣Φ的基礎上,求解原信號x的過程。然而一般信號x本身並不稀疏,需要在某種稀疏基上進行稀疏表示,即x=Ψs, 其中s為稀疏向量,即為所求的稀疏信號;Ψ為稀疏基矩陣,也叫稀疏變換矩陣,如傅里葉變換。

於是最終問題表示為:

                                                                                  y = ΦΨs = Θs                                                                                      (1)

已知y,Φ,Ψ,求s, Θ稱為感知矩陣。感知矩陣需要滿足約束等距原則(RIP),因此需要測量矩陣Φ和稀疏基Ψ滿足不相關,即采樣過程與稀疏過程不相關。Candes等人又找到了獨立同分布的高斯隨機測量矩陣可以稱為普適的壓縮感知測量矩陣,於是滿足高斯分布的隨機測量矩陣就成了CS最常用的觀測矩陣。

3. CS的常用方法

已知(1)方程有無數解,因此需要通過增加約束來得到唯一解。方程是稀疏的,因此我們需要找到這個方程里所有解中最稀疏的內個就行了。

求解上述方程一般有三種思路:凸優化演算法,貪婪演算法,貝葉斯理論。CS常用演算法有:

基追蹤重構演算法 (Basis Pursuit, BP):BP演算法是一種凸優化方法。

正交匹配追蹤演算法 (OMP):OMP屬於貪婪演算法。

閾值迭代演算法 : 包括軟閾值迭代(ISTA)和迭代硬閾值(IHT)。ISTA的一種改進方法為快速閾值迭代(FISTA)。

【嵌牛參考】

[1]. Dandes, E. J. . 「Near-optimal signal recovery from random projections.」 Universal encoding strategies IEEE Transactions on Information Theory 52(2006).

[2]. Donoho, D. L. . 「Compressed sensing.」 IEEE Transactions on Information Theory 52.4(2006):1289-1306.

③ 由於c++中沒有實現如python中的string.split()和list.length()的方法,所以我自己寫了兩個程序,但有問題

很簡單的問題啊,你仔細想一下,python的split切分出來的字元串數組是什麼類型呢?list類型的啊!比如
x="abc def hgij"
x.split() 返肢棗禪回 ['abc', 'def', 'hgij']

那在C++中我也會整一個std::list啊,
std::list<string&>岩扮 mystrlist;
來了一個字元串x
string x="abc def hgij"
pos1=x.find_first_not_of( ' ', pos2 );
截取到一段字元歷塵串之後
string y = x.substr( pos1, pos2-pos1 )
插入到list裡面
mystrlist.push_back( y )
完事之後就可以對mystrlist做你想做的操縱了
mystrlist.size()

閱讀全文

與iht演算法相關的資料

熱點內容
瑜伽pdf下載地址 瀏覽:252
小花貓app改名叫什麼 瀏覽:837
編程器固件修改 瀏覽:523
沈陽技校有程序員嗎 瀏覽:300
各行app的基金有什麼不一樣嗎 瀏覽:62
python編譯器怎麼裝 瀏覽:73
新浪php筆試題 瀏覽:138
新時達伺服器如何自學習 瀏覽:27
程序中什麼命令用來輸入單字元 瀏覽:59
php是否有數據 瀏覽:141
虛擬雲伺服器是什麼意思 瀏覽:279
vb是編譯性語言嗎 瀏覽:209
json格式用什麼編譯器 瀏覽:319
word轉pdf代碼 瀏覽:802
單片機中如何編程 瀏覽:739
cad常見的快捷命令 瀏覽:625
伺服器端有什麼 瀏覽:325
文件夾正在使用如何重命名 瀏覽:378
單片機觸摸 瀏覽:875
qq收藏夾在手機哪個文件夾 瀏覽:755