999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種長序列小波變換快速算法的DSP實現

2008-04-12 00:00:00呂新華何川平李早華潘明忠
現代電子技術 2008年9期

摘 要:由于小波變換算法的復雜性,直接計算小波變換耗時較長,微機和通用的微處理器在運算速度上難以實現小波變換的實時性要求。定點DSP具有低功耗、高性能的特點,本文結合TI公司的16位定點DSP,將小波變換快速算法用C語言開發,詳細說明了小波變換快速算法在定點DSP上的具體實現,解決了小波變換實時、高精度處理的要求,大大提高了小波變換的運算效率。

關鍵詞:小波變換;數字信號處理器;快速算法;圓周卷積

中圖分類號:TP301.6 文獻標識碼:B

文章編號:1004-373X(2008)09-132-03

Implementation of Long Sequence Wavelet Transform Based on DSP

LV Xinhua,HE Chuanping,LI Zaohua,PAN Mingzhong

(Naval 91669 Unit,Haikou,571100,China)

Abstract:Due to the complexity of the wavelet transformation algorithm,the processing velocity of computer and general microprocessor can hardly meet its real-time requirements.Based on the 16-bit fixed point DSP who has low power consumption and high performance presented by TI Company,this article explains the detailed realization process of the wavelet transformation algorithm so as to meet the real-time and high resolution processing requirement in the wavelet transformation algorithm.

Keywords:wavelet transform;digital signal processor;fast algorithm;cyclic convolution

1 引 言

由于小波變換具有良好的時頻分析特性,已經廣泛應用于各種信號分析領域。由于小波變換算法的復雜性,如果直接計算小波變換,所需內存較大,耗時較長。盡管當今處理器芯片運算速度得到了大幅度的提高,但仍然在實時性上不能滿足要求。為了簡化計算過程,人們相繼設計了一系列的快速算法來計算小波變換,以降低其運算次數[1]。

小波變換在大多數具體應用中主要是在線信號的實時分析處理,微機和通用的微處理器在運算速度上難以適應信號實時、高精度處理的要求。數字信號處理器(DSP)就是為了適應這種需求而開發的。美國TI公司是全球最大的DSP供應商,其生產的TMS320C55x系列16位定點DSP芯片具有低功耗、高性能等特點,具有廣泛的應用領域,本文應用該系列DSP芯片,將文獻[2]提出的小波變換快速算法用C語言開發加以實現,解決了小波變換實時、高精度處理的要求。

2 小波分解過程的DSP實現

小波分解過程中算法實現的數據結構存儲和尋址方式如圖1所示。

圖1 算法實現的數據結構存儲和尋址方式

小波分解過程中C語言算法實現的偽代碼如下:

for(LayerID=1;LayerID<=LAYER_NUM;LayerID++)//小波多層分解

{數據邊界延拓程序模塊;

pTemp1=pSrc-M+1;//臨時指針指到延拓后數據的源頭

/*應用長序列快速卷積的重疊保留法計算擴展后數據和分解濾波器組的卷積*/

for(i=1;i<=SegNum;i++)//開始分段

{從源數據區搬送數據到計算區的程序模塊;

用圓周卷積計算線性卷積的程序模塊;

將計算區的結果保存到目標區的程序模塊;

pTemp1=pTemp1-M+1;//臨時指針指向下一個分段的數據起始點}

SrcLen=(SrcLen+M-1)/2;//下一級分解的源數據長度

/*為下一層分解做準備*/

pTemp2=pSrc; pSrc=pDest; pDest=pTemp2;//交換數據指針,即交換數據源區和目標區

pSrcEnd=pSrc+SrcLen+M-1; }

下面分別對偽代碼中各個子程序模塊的具體實現進行分析。

2.1 邊界延拓模塊

數據邊界延拓程序模塊的實現[3]:

定義一個數據地址指針pSrc始終指向載入的源數據頭地址,即pSrc=Layer1Data+M-1,在源數據的首尾各對稱延拓M-1個點。該模塊的C語言實現代碼如下:

for(i=M-1;i>=1;i--)

*(pSrc-i)=*(pSrc+i-1);//前導數據擴展M-1個

pTemp1=pSrc+SrcLen;//臨時指針指到最后一個數據并出界一個

for(i=0;i

*(pTemp1+i)=*(pTemp1-i-1);//尾部數據擴展M-1個

2.2 數據搬移模塊

從源數據區搬送數據到計算區的程序模塊實現:定義一個臨時地址指針pTemp1指向擴展后的數據首地址,即:pTemp1=pSrc-M+1,SegNum為長序列分段數,將數據從數據源區分段搬送到計算區,并將16 b數據擴展為32 b,通過對虛部填零,組成復數輸入數據數組signal,該模塊C語言實現代碼如下(i為分段標記,N為分段圓周卷積長度):

if(i!=SegNum)//除最后一段外的每一段

{for(j=0;j

{signal[j]=*(pTemp1++);signal[j+1]=0;//實部擴展為32bit

signal[j+2]=0;signal[j+3]=0;}//虛部為0,也擴展為32bit}

else //最后一段后面不足的補0

{for(j=0;j

{if(pTemp1==pSrcEnd) //沒數據了,臨時指針不動

{signal[j]=0;signal[j+1]=0; }

else//還有數據,臨時指針繼續向后移動

{signal[j]=*(pTemp1++);signal[j+1]=0;}

signal[j+2]=0;signal[j+3]=0;} //虛部為0,并擴展為32bit

2.3 基于圓周卷積的線性卷積模塊

用圓周卷積計算signal和分解濾波器組dec_filter的線性卷積out_buffer,該模塊的C語言實現代碼如下[4]

cfft32_SCALE((LDATA *)signal,N);

cbrev32((LDATA *)signal,(LDATA *)signal,N);//計算分段信號的FFT

for (j=0;j<2*N;j=j+2)//計算復數的點乘運算

{x1=((long)signal[2*j]*(long)dec_filter[j])1;

x2=((long)signal[2*j+2]*(long)dec_filter[j+1])1;

x3=((long)signal[2*j+2]*(long)dec_filter[j])1;

x4=((long)signal[2*j]*(long)dec_filter[j+1])1;

out_buffer[j]=x1-x2;

out_buffer[j+1]=x3+x4;}

cifft32_NOSCALE(out_buffer,N);

cbrev32(out_buffer,out_buffer,N);[JY]//計算分段輸出的IFFT

2.4 結果保存模塊

將計算區的結果保存到目標區的程序模塊實現:將out_buffer去掉前面M-1個復數,后面N-M+1個復數只取實部,即只取低頻分量,對取出的實部乘以比例系數,這里采用的是小數乘法,然后再取前16 b,將結果存到數據存儲目標區Layer2Data2,定義目標區存儲的首地址指針為pDest=Layer2Data+M-1,然后定義臨時數據指針pTemp2=pDest,該模塊C語言實現代碼如下:

for(j=(M-1)*2;j

{LTemp1=out_buffer[j];//實部

LTemp2[WB]=((LTemp116)*Factor1[LayerID-1])2;//計算高16 b,乘比例系數再乘2,加上小數乘法

[DW] 左移1位,共移2位

LTemp3=(long)(((unsigned long)(LTemp1 0x0000ffffL) * Factor1[LayerID-1])(16-1));//計算低16位,無符號乘法

*(pTemp2++)=(LTemp2+LTemp3)16;//往目標區保存結果 }

將保存在目標區內的數據減采樣一半,仍舊保存在目標區內,該模塊的C語言代碼如下:

pTemp2=pDest;//臨時指針回復到目標區的源頭

for(L=1;L

*(pTemp2++)=*(pDest+L);

3 小波重構過程的DSP實現

首先對數據源區要重構的低頻、高頻數據分量進行上采樣,將上采樣后的數據存到另外一個目標數據緩沖區,該模塊的C語言程序代碼如下:

pTemp2=pDest;//臨時指針指向目標區,作為重構數據的起點

for(L=0;L

{*(pTemp2++)=0;//奇數位置插入0值

*(pTemp2++)=*(pSrc+L);}

*(pTemp2)=0;//尾部多補一個0

交換數據指針,將計算結果存到另一區,對上采樣后的數據進行邊界延拓,然后應用重疊保留法計算擴展后的數據和重構濾波器組的線性卷積,這兩個模塊的實現同分解過程。惟一有所區別的是,在保存數據時,每一層重構時的第一個分段前面要去掉的個數要多一點,模塊的C語言代碼如下:

if(i==1) //i為分段標記

SaveBegin=(M-1+Trim)*2;//第一個分段要多丟掉一些

else

SaveBegin=(M-1)*2;//其他分段丟掉的數據(16bit)個數

for(j=SaveBegin;j

{ …… }

4 結 語

由于小波變換算法的復雜性,微機和通用的微處理器在運算速度上難以實現小波變換的實時性要求。定點DSP具有低功耗、高性能的特點,本文結合TI公司的16位定點DSP說明了小波變換快速算法的具體實現,解決了小波變換實時、高精度處理的要求。

參 考 文 獻

[1]Mallat S.A Theory for Multi-resolution Signal Decomposition:The Wavelet Representation[J].IEEE Transaction on Pattern Analysis and Machine Intelligence,1989,11(4): 674-693.

[2]呂新華.一種長序列小波變換的快速實現方法[J].數據采集與處理,2006,21(1):86-89.

[3]呂新華.小波變換Mallat算法實現中的邊界延拓研究[J].天津理工大學學報,2006,22(2):14-17.

[4]虞湘賓.長序列信號快速相關與卷積的算法研究[J].電路與系統學報,2001,6(4):78-83.

作者簡介 呂新華 男,1976年出生,湖北十堰人,碩士。主要從事數字信號處理研究。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。

主站蜘蛛池模板: 正在播放久久| 亚洲国产欧美国产综合久久| 青青草综合网| 日本一本正道综合久久dvd| 五月婷婷丁香综合| 青青草原国产一区二区| 热久久国产| 精品无码日韩国产不卡av| 中文字幕av一区二区三区欲色| 亚洲精品另类| 99精品影院| 热热久久狠狠偷偷色男同| 欧美午夜久久| 国产日韩欧美黄色片免费观看| 中文字幕有乳无码| 啊嗯不日本网站| 国产福利一区二区在线观看| 国产欧美另类| 多人乱p欧美在线观看| 欧美日韩动态图| 国产在线观看99| 97人妻精品专区久久久久| 亚洲av综合网| 国产成人精品综合| 国产拍在线| 99视频精品全国免费品| 国产chinese男男gay视频网| 国产极品美女在线播放| 亚洲精品色AV无码看| 亚洲成人高清无码| 国产一区二区三区在线无码| 草草影院国产第一页| 欧美日韩中文国产va另类| 久久青青草原亚洲av无码| 日韩小视频网站hq| 噜噜噜久久| 亚洲成在人线av品善网好看| 在线va视频| 国产第一福利影院| 精品综合久久久久久97超人该| 国产三级成人| 国产精品无码一二三视频| 久久综合亚洲鲁鲁九月天| 天天爽免费视频| 又粗又大又爽又紧免费视频| 中文字幕伦视频| 99久久精品免费看国产免费软件| 欧洲日本亚洲中文字幕| 国产第一页亚洲| 免费无码AV片在线观看中文| 日本www在线视频| 国产成人综合久久精品下载| 国产农村精品一级毛片视频| 福利在线免费视频| 国产日韩欧美一区二区三区在线| 五月天综合网亚洲综合天堂网| 亚洲欧美色中文字幕| 国产精品美女网站| 尤物精品视频一区二区三区| 国产国拍精品视频免费看| 91www在线观看| 真人免费一级毛片一区二区| 超薄丝袜足j国产在线视频| 在线播放91| 亚洲中久无码永久在线观看软件| 久久一级电影| 国产精品久久自在自线观看| 精品三级网站| 91久久偷偷做嫩草影院| 亚洲品质国产精品无码| 色综合手机在线| 69视频国产| 免费 国产 无码久久久| 九九九九热精品视频| 国产青青草视频| 久久久久无码国产精品不卡 | 人与鲁专区| 亚洲αv毛片| 99热国产这里只有精品9九| 黄色网址免费在线| 在线观看国产网址你懂的| 婷婷综合亚洲|