用MATLAB解决以下问题:x(n)=cos(0.48πn)+cos(0.52πn)。按照如下要求求其DFT与DTFT变换。(1) 取 x(n)的前 10 点数据,求 N=10 点的 DFT与DTFT变换,并分别作图。(2)将(1)中x(n)补零至100点,求 N=100点的 DFT与DTFT变换,并分别作图。(3)取 x(n)的前 100 点数据,求 N=100 点的 DFT与DTFT变换,并分别作图。(4)取 x(n)的前 128 点数据,求 N=128 点的 DFT与DTFT变换,并分别作图。(5)取 x(n)的前50点数据,求 N=50 点的 DFT与DTFT变换,并分别作图。作图要求:幅度谱与相位谱。提示:DTFT变换用如下指令完成x=cos(0.48*pi*n )+cos (0.52*pi*n); w= [ 0: 500]*2*pi/500; X=x*exp(-j*n'*w ) ; X(K)的求取可使用 fft () .
时间: 2023-11-22 07:51:56 浏览: 315
1. 取 x(n)的前 10 点数据,求 N=10 点的 DFT与DTFT变换,并分别作图。
```matlab
n = [0:9];
x = cos(0.48*pi*n) + cos(0.52*pi*n);
% DFT
X = fft(x, 10);
mag_X = abs(X);
phase_X = angle(X);
% DTFT
w = [0:500]*2*pi/500;
X_dtft = x * exp(-j*n'*w);
mag_X_dtft = abs(X_dtft);
phase_X_dtft = angle(X_dtft);
% plot
subplot(2,2,1); stem(n,x); title('x(n)');
subplot(2,2,2); stem(n,mag_X); title('DFT Magnitude');
subplot(2,2,3); plot(w/pi,mag_X_dtft); title('DTFT Magnitude');
subplot(2,2,4); plot(w/pi,phase_X_dtft/pi); title('DTFT Phase');
```
结果如下图所示:
![1](https://img-blog.csdnimg.cn/2021091414501864.png)
2. 将(1)中x(n)补零至100点,求 N=100点的 DFT与DTFT变换,并分别作图。
```matlab
% zero-padding
x_zp = [x zeros(1,90)];
% DFT
X = fft(x_zp, 100);
mag_X = abs(X);
phase_X = angle(X);
% DTFT
w = [0:500]*2*pi/500;
X_dtft = x_zp * exp(-j*n'*w);
mag_X_dtft = abs(X_dtft);
phase_X_dtft = angle(X_dtft);
% plot
subplot(2,2,1); stem([0:99],x_zp); title('x(n) with zero-padding');
subplot(2,2,2); stem([0:99],mag_X); title('DFT Magnitude');
subplot(2,2,3); plot(w/pi,mag_X_dtft); title('DTFT Magnitude');
subplot(2,2,4); plot(w/pi,phase_X_dtft/pi); title('DTFT Phase');
```
结果如下图所示:
![2](https://img-blog.csdnimg.cn/20210914145018635.png)
3. 取 x(n)的前 100 点数据,求 N=100 点的 DFT与DTFT变换,并分别作图。
```matlab
n = [0:99];
x = cos(0.48*pi*n) + cos(0.52*pi*n);
% DFT
X = fft(x, 100);
mag_X = abs(X);
phase_X = angle(X);
% DTFT
w = [0:500]*2*pi/500;
X_dtft = x * exp(-j*n'*w);
mag_X_dtft = abs(X_dtft);
phase_X_dtft = angle(X_dtft);
% plot
subplot(2,2,1); stem(n,x); title('x(n)');
subplot(2,2,2); stem(n,mag_X); title('DFT Magnitude');
subplot(2,2,3); plot(w/pi,mag_X_dtft); title('DTFT Magnitude');
subplot(2,2,4); plot(w/pi,phase_X_dtft/pi); title('DTFT Phase');
```
结果如下图所示:
![3](https://img-blog.csdnimg.cn/20210914145018721.png)
4. 取 x(n)的前 128 点数据,求 N=128 点的 DFT与DTFT变换,并分别作图。
```matlab
n = [0:127];
x = cos(0.48*pi*n) + cos(0.52*pi*n);
% DFT
X = fft(x, 128);
mag_X = abs(X);
phase_X = angle(X);
% DTFT
w = [0:500]*2*pi/500;
X_dtft = x * exp(-j*n'*w);
mag_X_dtft = abs(X_dtft);
phase_X_dtft = angle(X_dtft);
% plot
subplot(2,2,1); stem(n,x); title('x(n)');
subplot(2,2,2); stem(n,mag_X); title('DFT Magnitude');
subplot(2,2,3); plot(w/pi,mag_X_dtft); title('DTFT Magnitude');
subplot(2,2,4); plot(w/pi,phase_X_dtft/pi); title('DTFT Phase');
```
结果如下图所示:
![4](https://img-blog.csdnimg.cn/20210914145018725.png)
5. 取 x(n)的前50点数据,求 N=50点的 DFT与DTFT变换,并分别作图。
```matlab
n = [0:49];
x = cos(0.48*pi*n) + cos(0.52*pi*n);
% DFT
X = fft(x, 50);
mag_X = abs(X);
phase_X = angle(X);
% DTFT
w = [0:500]*2*pi/500;
X_dtft = x * exp(-j*n'*w);
mag_X_dtft = abs(X_dtft);
phase_X_dtft = angle(X_dtft);
% plot
subplot(2,2,1); stem(n,x); title('x(n)');
subplot(2,2,2); stem(n,mag_X); title('DFT Magnitude');
subplot(2,2,3); plot(w/pi,mag_X_dtft); title('DTFT Magnitude');
subplot(2,2,4); plot(w/pi,phase_X_dtft/pi); title('DTFT Phase');
```
结果如下图所示:
![5](https://img-blog.csdnimg.cn/2021091414501870.png)
阅读全文