1.计算矩形序列x(n)= R30(n)的64点DFT,并以画 图的形式显示其幅度谱和相位谱。(可以调用Matlab函数实现 DFT)
时间: 2024-10-08 07:12:00 浏览: 63
贸泽推出业界尺寸超小IEEE 802.15.4 Microchip SAM R30 Sub-GHz模块
在 MATLAB 中,要计算矩形序列 `x(n) = R30(n)` 的 64 点离散傅立叶变换(Discrete Fourier Transform, DFT),并绘制幅度谱和相位谱,你需要按照以下步骤操作:
首先,假设 `R30` 表示长度为 30 的单位冲激响应(Rectangular Pulse),你需要将其扩展至长度为 64 点以便进行 DFT,因为 MATLAB 的 `fft` 函数默认是针对偶数长度信号的。
```matlab
% 设定原始序列长度为 30
rect_seq = rectpuls(30, 15); % 30 点矩形序列,中心位置是第 15 项
% 扩展序列至 64 点,填充 0s
extended_rect_seq = padarray(rect_seq, [32 0], 0); % 填充 0 到序列的开始
% 计算 64 点 DFT
dft_result = fft(extended_rect_seq);
% 分割 DFT 向量为幅度谱和相位谱
magnitude_spectrum = abs(dft_result);
phase_spectrum = angle(dft_result);
% 绘制幅度谱和相位谱
figure;
subplot(2, 1, 1);
plot(freqz(extended_rect_seq), 'b');
title('Magnitude Spectrum of the Rectangular Sequence');
xlabel('Frequency Index');
ylabel('Magnitude');
subplot(2, 1, 2);
plot(freqz(extended_rect_seq, dft_result), 'r');
title('Phase Spectrum of the Rectangular Sequence');
xlabel('Frequency Index');
ylabel('Phase Angle (in radians)');
```
这段代码首先生成了 30 点矩形序列并扩展到 64 点,接着计算了 DFT,然后分离出幅度和相位部分,并分别绘制出来。
注意:这里 `freqz` 函数用于生成频率轴的标签,`padarray` 用于在序列前端添加零值进行扩展。
阅读全文