x(n)=cos(2 *pi *6.5 *1000*t)+cos(2* pi* 7* 1000*t)+cos(2* pi 9*1000*t)(1) 截取x(n)使x(n)成为有限长序列N=16,编写程序计算出x(n)的N点DFT的X(k),并绘制出相应的幅频图。 (2) 采集数据x(n)长度N=16点,补零加长至M点(长M自己取),利用补零DFT计算x(n)的频谱并画出相应的幅频图。 (3)采集数据x(n)长为M点(注意不补是零至M),编写程序计算出M点采集数据x(n)的频谱并画出相应的幅频图。以上请用matlab实现
时间: 2023-12-17 21:05:58 浏览: 160
好,下面是Matlab实现代码:
(1) 计算16点DFT
```matlab
fs = 16000; % 采样频率
T = 1/fs; % 采样周期
N = 16; % 采样点数
% 构造序列x(n)
n = 0:N-1;
x = cos(2*pi*6.5*1000*n*T) + cos(2*pi*7*1000*n*T) + cos(2*pi*9*1000*n*T);
% 计算16点DFT
X = fft(x, N);
% 绘制幅频图
figure;
stem(abs(X));
xlabel('k');
ylabel('|X(k)|');
title('Amplitude Spectrum (N-point DFT)');
```
(2) 补零DFT
```matlab
fs = 16000; % 采样频率
T = 1/fs; % 采样周期
N = 16; % 采样点数
M = 128; % 补零后的点数
% 构造序列x(n)
n = 0:N-1;
x = cos(2*pi*6.5*1000*n*T) + cos(2*pi*7*1000*n*T) + cos(2*pi*9*1000*n*T);
% 补零
x_pad = [x, zeros(1, M-N)];
% 计算补零DFT
X_pad = fft(x_pad, M);
% 绘制幅频图
figure;
stem(abs(X_pad));
xlabel('k');
ylabel('|X(k)|');
title('Amplitude Spectrum (zero-padding)');
```
(3) M点DFT
```matlab
fs = 16000; % 采样频率
T = 1/fs; % 采样周期
N = 16; % 采样点数
M = 128; % 采集点数
% 构造序列x(n)
n = 0:M-1;
x = cos(2*pi*6.5*1000*n*T) + cos(2*pi*7*1000*n*T) + cos(2*pi*9*1000*n*T);
% 计算M点DFT
X = fft(x, M);
% 绘制幅频图
figure;
stem(abs(X));
xlabel('k');
ylabel('|X(k)|');
title('Amplitude Spectrum (M-point DFT)');
```
阅读全文