用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。
时间: 2024-03-09 09:45:15 浏览: 108
DFT.rar_DFT的幅频特性_M?n_dft 幅相特性_matlab计算DFT_频谱DFT
下面是一个简单的 MATLAB 函数 `dft.m`,它可以计算序列 x(n) 的 N 点 DFT:
```matlab
function X = dft(x, N)
% x: 输入序列
% N: DFT 点数
% 如果未指定 DFT 点数,则默认为输入序列长度
if nargin < 2
N = length(x);
end
% 确保输入序列是行向量
x = x(:)';
% 确保 DFT 点数不超过序列长度
N = min(N, length(x));
% 创建 DFT 矩阵
n = 0:N-1;
k = n';
W = exp(-2*pi*1i/N * n' * k);
% 计算 DFT
X = x(1:N) * W;
end
```
使用方法:
假设你有一个长度为 8 的序列 `x`,想要计算其 4 点 DFT。可以使用以下代码:
```matlab
x = [1 2 3 4 5 6 7 8];
N = 4;
X = dft(x, N);
```
其中,`x` 是输入序列,`N` 是 DFT 点数,`X` 是计算得到的 DFT。
阅读全文