### 华工信号与系统实验三实验报告 #### 一、实验目的 本次实验旨在通过应用离散傅里叶变换(DFT)来分析模拟信号\(x(t)\)的频谱,进而深入理解利用DFT分析模拟信号频谱的原理、过程中可能出现的现象及其解决方法。 #### 二、实验原理 **连续周期信号与离散周期信号的关系**: - 通过时域抽样定理,可以建立起连续周期信号与离散周期信号之间的联系。 - 在此基础上,通过添加时域抽样的步骤,可以实现连续周期信号的DFT分析。 **连续非周期信号与离散非周期信号的关系**: - 同样地,通过时域抽样定理,可以建立起连续非周期信号与离散非周期信号之间的联系。 - 在此基础上,通过添加时域抽样的步骤,可以实现连续非周期信号的DFT分析。 **利用DFT分析连续周期信号频谱的具体步骤**: 1. **确定基本周期**:首先要确定周期信号的一个完整周期。 2. **计算抽样点数**:如果周期信号的最高次谐波为\(p\)次谐波,则频谱中有\(2p+1\)根谱线。如果周期信号的频谱无限宽,则选择能够覆盖信号90%以上能量的前\((p+1)\)次谐波作为近似的频谱范围,其余谐波忽略不计。此时,抽样点数\(N \geq 2p+1\)。 3. **时域抽样**:对连续周期信号以抽样间隔\(T = T_0 / N\)进行抽样,得到离散信号\(x[k]\)。 4. **FFT运算**:利用FFT函数对\(x[k]\)进行\(N\)点FFT运算,得到频域信号\(X[m]\)。 5. **频谱计算**:最终求得连续周期信号的频谱为\(X(nw_0) = X[m] / N\)。 **利用DFT计算连续非周期信号\(x(t)\)的频谱的具体步骤**: 1. **确定时域抽样间隔**:根据时域抽样定理确定时域抽样间隔\(T\),从而得到离散序列\(x[k]\)。 2. **信号截短与窗函数的选择**:确定信号截短的长度\(M\)以及窗函数的类型,得到有限长\(M\)点离散序列\(x_M[k] = x[k]w[k]\)。 3. **频域抽样点数**:确定频域抽样点数\(N\),要求\(N \geq M\)。 4. **FFT计算**:利用FFT函数进行\(N\)点FFT计算,得到\(X[m]\)。 5. **频谱计算**:由\(X[m]\)可以得到连续信号频谱\(X(jw)\)样点的近似值。 #### 三、实验内容 **1. 利用FFT分析信号的频谱** - **确定DFT计算的各参数**:包括抽样间隔、截短长度、频谱分辨率等。 - **比较理论值与计算值**:分析两者之间的误差原因,并提出改进措施。 **2. 分析周期信号的频谱时,分析长度的选择** - 如果分析长度不为整周期,使用FFT函数计算并绘制其频谱。 - 总结对周期信号进行频谱分析时,如何合理选取信号的分析长度。 **3. 对一段实际信号进行频谱分析** - 给定信号表达式为\(x(t) = \cos(2\pi f_1 t) + 0.75\cos(2\pi f_2 t)\),其中\(f_1 = 100Hz\),\(f_2 = 110Hz\)。 - 确定合适的抽样频率,利用DFT分析信号\(x(t)\)的频谱。 - 使用Hamming窗和不同参数的Kaiser窗,确定能够分辨最小谱峰间隔与信号长度的关系。 **4. 分析淹没在噪声中的信号** - 产生一个由50Hz和120Hz的正弦信号以及零均值随机噪声组成的信号\(x(t)\)。 - 确定抽样间隔和信号截短长度,分析信号的频谱。 - 指出50Hz和120Hz的正弦成分对应的谱峰位置,并详细描述检测信号的步骤和原理。 #### 四、实验过程与分析 **示例代码与结果分析**: 以下是一段用于分析信号频谱的MATLAB代码示例: ```matlab % 参数设置 fsam = 50; % 抽样频率 Tp = 6; % 时间长度 N = 512; % 抽样点数 T = 1/fsam; % 抽样间隔 t = 0:T:Tp; % 时间向量 x = exp(-2*t); % 信号 X = T * fft(x, N); % 频域幅度 % 画图 subplot(3,1,1); plot(t,x); xlabel('t'); ylabel('|X(jw)|'); title('时域波形'); w = (-N/2:N/2-1) * (2*pi/N) * fsam; % 频率向量 y = 1 ./ (j * w + 2); subplot(3,1,2); plot(w, abs(fftshift(X)), w, abs(y), 'r-.'); title('幅度谱'); xlabel('w'); ylabel('y=|1/(j*w+1)|'); legend('理论值', '计算值'); axis([-10, 10, 0, 1.4]) subplot(3,1,3); error = abs(abs(fftshift(X)) - abs(y)); plot(w, error); title('理论与计算的误差'); ``` **代码结果解析**: - 上述代码展示了如何利用MATLAB对信号进行时域和频域分析。 - 通过对信号进行FFT变换,可以得到频域上的幅度谱,并与理论值进行对比。 - 通过观察误差图,可以进一步分析误差来源,并提出相应的改进措施。 通过本次实验,不仅可以加深对DFT的理解,还能掌握利用DFT分析信号频谱的方法,并学会如何处理实验过程中遇到的各种问题。
剩余19页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助