时域采样与频域采样matlab实验代码
时间: 2025-02-27 21:40:53 浏览: 66
### 关于时域采样与频域采样的MATLAB实验代码
#### 1. 定义参数并生成原始信号
为了展示时域采样和频域采样的过程,在此定义一些必要的参数,比如采样频率 `Fs` 和时间向量 `t`。接着创建一个简单的正弦波作为待分析的模拟信号。
```matlab
% 参数设置
Fs = 1000; % 采样频率 (Hz)
T = 1/Fs; % 采样周期 (秒)
L = 1500; % 信号长度
t = (0:L-1)*T; % 时间向量
% 创建含有两个不同频率分量的复合正弦波形
f1 = 50; % 第一频率成分 (Hz)
f2 = 120; % 第二频率成分 (Hz)
xn = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t);
```
#### 2. 添加随机噪声到原信号中
为了让数据更贴近实际情况,可以给纯净的输入信号加入一定的高斯白噪声来模拟真实环境下的测量误差或干扰源的影响。
```matlab
% 加入零均值加性白色高斯噪声
rng default % 初始化随机种子以获得可重复的结果
xn_noisy = xn + 2*randn(size(t)); % 噪声强度可以根据实际需求调整
```
#### 3. 执行快速傅立叶变换FFT操作
利用内置函数 `fft()` 对含噪后的离散时间序列执行快速傅里叶转换,从而将其映射至相应的频谱空间内;同时考虑到镜像特性只保留一半的数据用于绘图显示。
```matlab
Y = fft(xn_noisy);
P2 = abs(Y/L); % 双边幅值谱
P1 = P2(1:L/2+1); % 单边幅值谱
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;
```
#### 4. 绘制结果图表
通过调用 `subplot()` 函数分别在同一窗口的不同子区绘制出未经处理及时域去噪之后的对比图像以及对应的频域表示形式,便于直观理解两者之间的关系变化情况。
```matlab
figure;
% 子图1:原始带噪信号与时域图形
subplot(2,2,[1 3]);
plot(Fs*t(1:50),xn_noisy(1:50));
title('Time domain signal with noise');
xlabel('Time / msec');
ylabel('Amplitude');
% 子图2&4:双边功率谱密度估计及其单侧版本
subplot(2,2,2);
plot(f,P1)
title('Single-sided amplitude spectrum of X(t)')
xlabel('Frequency f (Hz)');
ylabel('|P1(f)|')
grid on
```
以上就是完整的时域采样与频域采样的MATLAB实现流程[^1]。该实例不仅展示了如何从理论上构建连续时间信号并通过适当的方法对其进行数字化采集,还进一步探讨了这些样本点在另一个维度——即频率领域内的表现形态。
阅读全文
相关推荐


















