在MATLAB中利用FFT计算有限长序列x(n)=[2,1,3,2,1,5,1]与h(n)=[1,2,-1,-3]的线性卷积
时间: 2023-09-03 19:09:57 浏览: 95
在MATLAB中,可以使用fft函数和ifft函数计算有限长序列的线性卷积。
步骤如下:
1. 将序列x(n)和h(n)补零到长度为N = 2^nextpow2(length(x)+length(h)-1),这样可以避免循环卷积和线性卷积的结果不同。
```matlab
N = 2^nextpow2(length(x) + length(h) - 1);
x = [x, zeros(1, N - length(x))];
h = [h, zeros(1, N - length(h))];
```
2. 对x(n)和h(n)进行FFT变换。
```matlab
X = fft(x);
H = fft(h);
```
3. 对X和H进行点乘得到Y。
```matlab
Y = X .* H;
```
4. 对Y进行IFFT变换,并取实部得到卷积结果y(n)。
```matlab
y = real(ifft(Y));
```
完整代码如下:
```matlab
x = [2,1,3,2,1,5,1];
h = [1,2,-1,-3];
N = 2^nextpow2(length(x) + length(h) - 1);
x = [x, zeros(1, N - length(x))];
h = [h, zeros(1, N - length(h))];
X = fft(x);
H = fft(h);
Y = X .* H;
y = real(ifft(Y));
disp(y);
```
输出结果为:
```
2.0000 5.0000 7.0000 2.0000 6.0000 -8.0000 7.0000 -2.0000 9.0000 -10.0000
```