用MATLAB编程,已知序列,试编写程序,求当N=16和N=8时的离散傅立叶变换,并绘出曲线。
时间: 2023-09-23 08:03:42 浏览: 41
以下是MATLAB代码实现:
当N=16时:
```
N = 16; % 序列长度
x = [1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0]; % 输入序列
% 计算DFT
X = zeros(1, N);
for k = 0:N-1
for n = 0:N-1
X(k+1) = X(k+1) + x(n+1)*exp(-1j*2*pi*k*n/N);
end
end
% 绘制曲线
subplot(2,1,1);
stem(0:N-1, abs(X)); % 幅度谱
title('N=16时幅度谱');
xlabel('k');
ylabel('|X(k)|');
subplot(2,1,2);
stem(0:N-1, angle(X)); % 相位谱
title('N=16时相位谱');
xlabel('k');
ylabel('<X(k)');
```
当N=8时:
```
N = 8; % 序列长度
x = [1 1 1 1 0 0 0 0]; % 输入序列
% 计算DFT
X = zeros(1, N);
for k = 0:N-1
for n = 0:N-1
X(k+1) = X(k+1) + x(n+1)*exp(-1j*2*pi*k*n/N);
end
end
% 绘制曲线
subplot(2,1,1);
stem(0:N-1, abs(X)); % 幅度谱
title('N=8时幅度谱');
xlabel('k');
ylabel('|X(k)|');
subplot(2,1,2);
stem(0:N-1, angle(X)); % 相位谱
title('N=8时相位谱');
xlabel('k');
ylabel('<X(k)');
```
运行代码后,会分别绘制出N=16和N=8时的幅度谱和相位谱曲线。