matlab 卷积改变步长,转载“MATLAB卷积函数改进”
雖然在MATLAB中我們已經有一個函數來計算兩個序列的卷積——conv函數。但其中有個問題,conv函數假定了兩個已知序列都是從n=0開始。我們從下面的例子來看看。
>> x = [3,11,7,0,-1,4,2];
>> nx = [-3:3];
>> h = [2,3,0,-5,2,1];
>> nh = [-1:4];
>> conv(x,h)
ans =
6?31?47?6?-51?-5?41?18?-22?-3?8?2
可見,已知的序列x和序列h都是給出了基底的,并不是從n=0開始,所以所得的結果只能說是兩者卷積后的值,并不能說是兩個序列卷積后得到的序列。因為結果并沒有表現出基底來,也就是沒有時間信息。所以我們必須對其進行改進。改后的函數定義為conv_m,如下。
function [y,ny] = conv_m(x,nx,h,nh)
nyb = nx(1) + nh(1);
nye = nx(length(x)) + nh(length(h));
ny = [nyb:nye];
y = conv(x,h);
重新計算卷積:
>> [y,ny] = conv_m(x,nx,h,nh)
y =
6?31?47?6?-51?-5?41?18?-22?-3?8?2
ny =
-4?-3?-2?-1?0?1?2?3?4?5?6?7
可以看出,不僅準確的得出了我們所謂的卷積后的值,而且也準確的得出了基底。比較兩次的結果如下圖。
總結
以上是生活随笔為你收集整理的matlab 卷积改变步长,转载“MATLAB卷积函数改进”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拼图算法分析...
- 下一篇: 再别极域(亲测有效)