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格式閱讀原文。

主站蜘蛛池模板: 超清无码熟妇人妻AV在线绿巨人| 一级毛片不卡片免费观看| 亚洲激情区| 夜色爽爽影院18禁妓女影院| 最新日韩AV网址在线观看| 亚洲中文字幕日产无码2021| 成AV人片一区二区三区久久| аv天堂最新中文在线| 国产在线一区二区视频| 国产人在线成免费视频| 天天躁狠狠躁| 亚洲精品视频网| 久久视精品| www.youjizz.com久久| 日韩欧美中文字幕一本| 美女毛片在线| 欧美亚洲国产精品久久蜜芽| 91在线播放免费不卡无毒| 国产一区二区精品福利| 国产精品xxx| 国产午夜福利亚洲第一| 日韩在线播放欧美字幕| 日韩成人在线网站| 国产午夜精品一区二区三区软件| 亚洲午夜国产精品无卡| 一级毛片在线播放| 91热爆在线| 福利一区三区| 国内精品伊人久久久久7777人| 亚洲欧美另类日本| 亚洲aⅴ天堂| 东京热一区二区三区无码视频| 丁香婷婷综合激情| 亚洲一级色| 亚洲综合色吧| 97视频精品全国在线观看| 国产精品自拍合集| 国产91在线免费视频| 亚洲国产成人麻豆精品| 亚洲精品人成网线在线 | 在线免费观看a视频| 中文字幕资源站| 久久婷婷色综合老司机| 欧美一区二区三区国产精品| 成人日韩精品| 囯产av无码片毛片一级| 日本在线免费网站| a亚洲天堂| 99精品热视频这里只有精品7| 国产在线98福利播放视频免费| 国产精品久久久久婷婷五月| 久久毛片网| 2019年国产精品自拍不卡| 亚洲一级毛片| 无码aaa视频| 亚洲综合久久成人AV| 国产免费高清无需播放器| 91九色最新地址| 亚欧成人无码AV在线播放| 免费午夜无码18禁无码影院| 亚洲欧美日韩中文字幕在线一区| 国产99免费视频| 99国产精品免费观看视频| 久久国产精品夜色| 91青青草视频在线观看的| 综合亚洲网| 国产精品成人一区二区不卡 | 欧洲熟妇精品视频| 青青青亚洲精品国产| 亚洲欧美不卡| 亚洲天堂网视频| 欧类av怡春院| 国产一区二区三区在线观看视频| 欧美视频免费一区二区三区| 无遮挡一级毛片呦女视频| 国产精品视频免费网站| 日韩欧美中文| 国产视频 第一页| 无码AV动漫| 日韩成人免费网站| 国产人妖视频一区在线观看| a级毛片免费看|