我思路是用豎乘法設計演算法,在程式開頭能使用者隨機輸出兩個序列的數值、長度和起始位置。程式能計算出兩個序列的卷積。最後結果和直接呼叫卷積函式的結果進行對比。並將圖繪製出來。
程式部分:
clc;clear all
x1=[1,3,5,7,6,4,2,1,4,5,2,12,34,11,34,12,2,33,12,12,12,5,61,35];ns1=-3;
x2=[4,0,2,1,-1,3,45,22,32,12,32,12,12,12,14,54,12,11,22,3,42,3,4];ns2=1;
nf1=ns1+length(x1)-1;
nf2=ns2+length(x2)-1;
n1=ns1:nf1
n2=ns2:nf2
ns3=ns2+ns1 %計算卷積序列起始位置
nf3=ns3+length(x1)+length(x2)-2 %計算卷積序列終止位置
n3=ns3:nf3
y2=zeros(1,length(n3)); %對卷積序列賦零初值
n=ns2 %定義迴圈起始位置
m=0 %在迴圈中
m變數依次表示被卷積序列的每個元素
q=1 %用
q引數控制移位資訊
while n<=nf2 %定義迴圈終止位置
m=x2(n)
y1=m*x1 %m與序列1相乘
[y1,n4] = seqshift(y1,n1,q) %相乘結果依次移
1-length(x2
)位
[y2,n3]=seqadd(y1,n4,y2,n3) %通過迴圈移位後結果累加
q=q+1
n=n+1
end[y4,n5] = convwthn (x1,n1,x2,n2) %呼叫卷積函式計算
subplot(211);stem(n3,y2,'.');xlabel('x1*x2演算法
');grid;
subplot(212);stem(n5,y4,'.');xlabel('x1*x2函式
');grid;
MATLAB中的卷積運算
imfilter 線性空間濾波 conv2 二位卷積 conv2 a,b,same 將b作為模版在a上平移,最後的矩陣大小與a相同 例如 a 1 2 3 4 5 6 7 8 9 b 1 1 1 1 1 1 1 1 1 conv2 a,b,same 12 21 16 27 45 33 24 39 28...
卷積操作的matlab實現
工作之餘,腦海中突然蹦出 影象的卷積操作怎麼實現呢?然後仔細考慮了以下實現細節,並記錄下來,以備日後檢視。為了便於敘述和驗證程式的有效性,這裡貼出一張原圖 圖1 和它相應地經過均值核卷積以後的效果圖 圖2 圖1.castle原始 圖2.castle經過均值核卷積後的結果 matlab functio...
Matlab的卷積編碼實現
最近在做乙個scfde波形的c和向量實現,指導老師給了幾份matlab 要我把對應的c語言和向量寫出來 並行運算指令操作 簡單的 一下就寫完了,有些寫的還是有點煩躁,特別是卷積編碼的解碼,今天我們先不談解碼,先談下編碼,這個還是寫的比較流暢的。卷積編碼器,聽著就不好理解,沒事,我來分析一波,首先我們...