用matlab将连续函数sin(t)和cos(t)在区间[0,2]上抽样,取抽样周期为1/32,作64点DFT,验证实偶对称序列和实奇对称序列的DFT的对称性,并作出幅频和相频特性曲线图。
时间: 2024-11-22 09:39:25 浏览: 54
在MATLAB中,你可以按照以下步骤操作来完成这个任务:
1. **创建信号**:
首先,你需要生成sin(πt)和cos(πt)的信号。在给定的区间[0,2]上,t的范围从0到2共有2个周期。由于抽样周期为1/32,你需要计算总共的采样点数(包括边界),这通常是n = floor(2 * (sampling_rate * t_max)) + 1。在这个例子中,`n = floor(2 * 32 * 2) + 1`。
```matlab
t = linspace(0, 2, 64); % 等间距时间样本
x = sin(pi*t); % 创建正弦波
y = cos(pi*t); % 创建余弦波
```
2. **采样并组合序列**:
将这两个信号合并成一个复数序列,因为它们实际上是复共轭对称的。对于每个时间点,添加实部和虚部。
```matlab
z = [real(x), imag(x), real(y), -imag(y)]; % 实偶对称序列
```
这里 `-imag(y)` 是因为cos函数是实偶的,而我们期望它在DFT中呈现对称性。
3. **计算DFT**:
使用`fft`函数计算64点的离散傅立叶变换(DFT)。
```matlab
X = fft(z);
```
4. **验证对称性**:
对于实偶序列,DFT的奇数分量应该是实数,偶数分量应该是对称的。检查DFT是否满足这个条件。
5. **绘制幅频谱和相频谱**:
使用`abs`和`angle`函数分别获取幅度和相位,然后画出幅频谱图(绝对值)和相频谱图(角度)。通常会看到sin和cos的频率成分在幅频图上对称分布,而在相频图上,除了DC分量外,其余是每半个周期翻转一次。
```matlab
% 幅频特性
magnitude = abs(X);
freq = (0:n-1)*(fs/(n)); % fs表示采样率,这里是1/32
plot(freq, magnitude)
xlabel('Frequency')
ylabel('Magnitude')
% 相频特性
phase = angle(X);
plot(freq, unwrap(phase, 180))
xlabel('Frequency')
ylabel('Phase unwrapped (degrees)')
```
最后别忘了查看结果,确认DFT的对称性和信号特征是否符合预期。
阅读全文