MATLAB 自編函數—用於卷積conv運算橫座標的確定

卷積運算

一般來說,在使用MATLAB的conv函數進行卷積運算時,我們的輸入序列都是從n=0時刻開始的,設兩個序列的長度爲N1和N2,則得到的卷積序列的長度爲N1+N2-1,其對應的橫座標範圍就是0:1:N1+N2-1-1。

當兩個序列的起始位置不爲0時,得到的卷積結果座標需要專門去確定。這裏自編一個函數get_bound來解決這個問題,和conv一起使用效果很好。

代碼實現

function [ bound ] = get_bound( n1, n2 )
%GET_BOUND 獲得序列卷積的橫座標範圍
%   輸入:兩個序列的橫座標範圍
%   輸出:卷積之後的橫座標範圍
    leftbound = n1(1) + n2(1);
    Len = length(n1)+length(n2)-1;
    rightbound = Len - 1 + leftbound;
    bound = leftbound:1:rightbound;
end

使用舉例

% 例子:
% 計算sin(n/2)0.5^n的卷積(3<=n<4*pi)

n = -3:1:4*pi;
f1n = sin(n/2);
f2n = power(0.5, n);
yn = conv(f1n, f2n);
n_ = get_bound(n, n);
stem(n_, yn); title('卷積圖像');
axis([-inf, inf, min(yn)*1.2, max(yn)*1.2]);

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章