x(n)={1,1,1,1,1,1,1,1},用matlab画出x(n)的DTFT及8点、16点和128点的DFT
时间: 2024-02-11 19:07:31 浏览: 67
用matlab实现DTFT 和DFT
5星 · 资源好评率100%
好的,我来回答你的问题。
首先,我们需要定义 x(n) 的向量。在 MATLAB 中,可以这样定义:
```matlab
x = [1 1 1 1 1 1 1 1];
```
接下来,我们可以使用 `fft` 函数计算 x(n) 的 DFT。首先,计算 8 点 DFT:
```matlab
X8 = fft(x, 8);
```
然后,计算 16 点 DFT:
```matlab
X16 = fft(x, 16);
```
最后,计算 128 点 DFT:
```matlab
X128 = fft(x, 128);
```
为了画出 x(n) 的 DTFT,我们可以使用 `freqz` 函数。首先,我们需要定义 DTFT 的频率向量:
```matlab
w = -pi:2*pi/255:pi;
```
然后,计算 DTFT:
```matlab
Xw = freqz(x, 1, w);
```
最后,我们可以使用 `subplot` 函数将 x(n) 的 DTFT 和 DFT 绘制在同一个图中:
```matlab
subplot(2,2,1);
plot(w, abs(Xw));
xlabel('Frequency (rad/sample)');
ylabel('Magnitude');
title('DTFT of x(n)');
subplot(2,2,2);
stem(0:7, abs(X8));
xlabel('Frequency (bin)');
ylabel('Magnitude');
title('8-point DFT of x(n)');
subplot(2,2,3);
stem(0:15, abs(X16));
xlabel('Frequency (bin)');
ylabel('Magnitude');
title('16-point DFT of x(n)');
subplot(2,2,4);
stem(0:127, abs(X128));
xlabel('Frequency (bin)');
ylabel('Magnitude');
title('128-point DFT of x(n)');
```
运行以上代码,即可得到 x(n) 的 DTFT 和三个不同长度的 DFT 的图像。
阅读全文