matlab重叠相加法求卷积,通过重叠相加法实现卷积的报告.doc
數(shù)字信號處理
課程設(shè)計
題目:通過重疊相加法實現(xiàn)卷積
院系:自動化與信息工程學(xué)院
專業(yè):通信工程
班級: 通信091
學(xué)號: 3090432028
姓名: 雷帛川
指導(dǎo)教師: 李建勛
職稱: 副教授
2012年7月1日2012年7月14日
用結(jié)構(gòu)化設(shè)計方法。一個程序劃分成若干模塊,每一個模塊的函數(shù)功能要劃分好,總體設(shè)計應(yīng)畫出流程圖;
輸入輸出界面要友好;
源程序書寫要規(guī)范,加必要的注釋;
要提供通過Matlab函數(shù)進行檢驗的結(jié)果;
程序一定要要能運行起來。
原理
經(jīng)常遇到兩個序列的長度相差很大的情況,解決這個問題的方法就是將長序列分段計算,運用分段處理方法中的重疊相加法計算兩個序列的卷積運算。
設(shè)一個給定序列是長度為n1的A,另一個導(dǎo)入序列是長度為n2的B,其中B序列是相對A序列比較長的,所以可以把B分為和A一樣長的若干段段,即B分后每一小段長度為n1。根據(jù)公式:
可知將B序列的每一小段與A序列做現(xiàn)行卷積,然后將所有的n2/n1段的線性卷積結(jié)果相加起來就是整個B序列和A序列的線性卷積結(jié)果,而又在本設(shè)計中,B序列的一小段和A序列的線性卷積又可由循環(huán)卷積來實現(xiàn),只要讓循環(huán)卷積的點數(shù),循環(huán)卷積的結(jié)果就和線性卷積的結(jié)果等價,在本實驗中取,故A序列和B序列的線性卷積可認為是由A序列和B的每一小段做點的循環(huán)卷積的最終累加和,
另外還有兩個個問題需要考慮,首先是做循環(huán)卷積時要對A序列和B序列的那一小段補零做卷積后,最終做累加的時候要考慮重疊的片段,必須將重疊的兩段加起來。不重疊的片段直接賦值。其次是如果B序列長度n2不是A序列長度n1的整數(shù)倍時,必須將B序列余下的那幾個數(shù)補零后和A序列做點循環(huán)卷積再加到最終的結(jié)果的相應(yīng)位置。
下列是計算循環(huán)卷積的過程:
在本次課設(shè)題中序列A和B序列的某一小段做循環(huán)卷積,由于已知A序列的長度為n1,故可取B序列的每一小段都和A序列相等長度,并且取循環(huán)卷積的點數(shù)為,這就保證每一組的循環(huán)卷積都等效于線性卷積。做循環(huán)卷積可運用循環(huán)卷積矩陣做,其第一步是將A序列和B序列的某一小段補零到長度為,然后把A序列通過變換生成的循環(huán)卷積矩陣,將補零后的B的某一小段轉(zhuǎn)置,然后用循環(huán)卷積矩陣乘以它就可以得到循環(huán)卷積的結(jié)果,在此也即線性卷積。
重疊相加法的圖示如下:
設(shè)計過程
1.循環(huán)卷積子函數(shù)流程圖
2.主函數(shù)流程圖
3.循環(huán)卷積子函數(shù)源程序:
function y=Convmy4(A,B,L) %創(chuàng)建循環(huán)卷積函數(shù)
if L
error('出錯');
end
if L>length(A) %如果A序列長度小于L則補零到L
A=[A,zeros(1,L-length(A))];
end
if L>length(B) %給B序列補零到L
B=[B,zeros(1,L-length(B))];
B=B'; %B轉(zhuǎn)置
end
E=A(1,1);
C=A(1,[2:L]); %寫循環(huán)矩陣的第一行
D=fliplr(C);
A=[E,D];
y(1)=A(1,1).*B(1,1);
for h=2:1:L
y(1)=y(1)+A(1,h).*B(h,1); % %計算循環(huán)卷積序列的第一個值
end
for k=2:1:L
t=A(1,L);
for i=L:-1:2
A(1,i)=A(1,i-1); %得到矩陣的第二到L行并計算循環(huán)卷積的
end %另外幾個值
A(1,1)=t;
y(k)=0;
for m=1:1:L
y(k)=y(k)+A(1,m).*B(m,1);
end
end
4.主
總結(jié)
以上是生活随笔為你收集整理的matlab重叠相加法求卷积,通过重叠相加法实现卷积的报告.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据挖掘算法_技术分享|大数据挖掘算法之
- 下一篇: evalin matlab,求解MATL