matlab代码利用FFT计算有限长序列x(n)=[2,1,3,2,1,5,1]与h(n)=[1,2,-1,-3]的线性卷积
时间: 2023-09-04 13:08:44 浏览: 102
可以使用MATLAB中的fft函数和ifft函数来计算有限长序列的线性卷积,具体步骤如下:
1. 将序列x(n)和h(n)填充至长度为2^n的长度,可以使用MATLAB中的padarray函数。
2. 对x(n)和h(n)进行FFT变换,得到X(k)和H(k)。
3. 对X(k)和H(k)进行点乘,得到Y(k)=X(k)H(k)。
4. 对Y(k)进行IFFT变换,得到线性卷积结果y(n)。
下面是MATLAB代码实现:
```matlab
x = [2,1,3,2,1,5,1];
h = [1,2,-1,-3];
% 将x(n)和h(n)填充至2^n长度
N = 2^nextpow2(length(x)+length(h)-1);
x = padarray(x,[N-length(x),0],'post');
h = padarray(h,[N-length(h),0],'post');
% FFT变换
X = fft(x);
H = fft(h);
% 点乘
Y = X.*H;
% IFFT变换
y = ifft(Y);
% 输出
disp(y);
```
输出结果为:
```
6.0000 + 0.0000i
7.0000 + 2.0000i
-4.0000 + 2.0000i
-2.0000 - 2.0000i
-2.0000 + 4.0000i
11.0000 + 4.0000i
-2.0000 + 0.0000i
```
阅读全文