当前位置: 首页 > news >正文

重邮数字信号处理-实验五时域采样与频域采样

一、实验目的

1、理解时域采样理论与频域采样理论;
2、掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号
不丢失信息;
3、掌握频率域采样会引起时域周期化的原因,频率域采样定理及其对频域采样点数
选择的指导作用;
4、对信号在某个表示域进行采样,会导致在另一个域周期化,科学的结论是建立在
对问题的仔细分析和实事求是的基础上得到的

二、实验原理

三、实验程序及结果分析

第一题:

结果:

代码: 

%% 参数初始化
A = 444.128;
alpha = 50 * sqrt(2)*pi;
Omega_0 = 50 * sqrt(2)*pi;
Tp = 0.064;         % 观测时间 64 ms

%% ------------------ Fs = 1000 Hz ------------------
Fs1 = 1000;
T1 = 1 / Fs1;
N1 = ceil(Tp * Fs1);
n1 = 0:N1-1;
x_n1 = A * exp(-alpha * n1 * T1) .* sin(Omega_0 * n1 * T1);

% 计算 FFT 并获取频谱特性
X_k1 = T1 * fft(x_n1, N1);
f1 = (0:N1-1) * (Fs1 / N1);

% 绘制时域采样信号
subplot(3, 2, 1);
stem(n1, x_n1, '.');
axis([0, N1, -100, 200]);
title('(a) Fs=1000Hz');
xlabel('n');
ylabel('x_a(n)');

% 绘制频域幅频特性
subplot(3, 2, 2);
plot(f1, abs(X_k1));
axis([0, Fs1, 0, 1]);
title('(a) T*FT[x_a(nT)], Fs=1000Hz');
xlabel('f(Hz)');
ylabel('幅度');

%% ------------------ Fs = 200 Hz ------------------
Fs2 = 200;
T2 = 1 / Fs2;
N2 = ceil(Tp * Fs2);
n2 = 0:N2-1;
x_n2 = A * exp(-alpha * n2 * T2) .* sin(Omega_0 * n2 * T2);

% 计算 FFT 并获取频谱特性
X_k2 = T2 * fft(x_n2, N2);
f2 = (0:N2-1) * (Fs2 / N2);

% 绘制时域采样信号
subplot(3, 2, 3);
stem(n2, x_n2, '.');
axis([0, N2, -100, 200]);
title('(a) Fs=200Hz');
xlabel('n');
ylabel('x_a(n)');

% 绘制频域幅频特性
subplot(3, 2, 4);
plot(f2, abs(X_k2));
axis([0, Fs2, 0, 1]);
title('(a) T*FT[x_a(nT)], Fs=200Hz');
xlabel('f(Hz)');
ylabel('幅度');

%% ------------------ Fs = 300 Hz ------------------
Fs3 = 300;
T3 = 1 / Fs3;
N3 = ceil(Tp * Fs3);
n3 = 0:N3-1;
x_n3 = A * exp(-alpha * n3 * T3) .* sin(Omega_0 * n3 * T3);

% 计算 FFT 并获取频谱特性
X_k3 = T3 * fft(x_n3, N3);
f3 = (0:N3-1) * (Fs3 / N3);

% 绘制时域采样信号
subplot(3, 2, 5);
stem(n3, x_n3, '.');
axis([0, N3, -100, 200]);
title('(a) Fs=300Hz');
xlabel('n');
ylabel('x_a(n)');

% 绘制频域幅频特性
subplot(3, 2, 6);
plot(f3, abs(X_k3));
axis([0, Fs3, 0, 1]);
title('(a) T*FT[x_a(nT)], Fs=300Hz');
xlabel('f(Hz)');
ylabel('幅度');

分析:

结果分析:
1. 采样频率高于奈奎斯特频率(1000 Hz)
        根据奈奎斯特采样定理,当采样频率 Fs≥Fmax 时,采样信号的频谱不会出现频谱混叠。信号的 最大频率 Fmax 是信号中最高的频率成分。
        实验现象:
        采样频率为 1000 Hz 时,信号的频谱与原始模拟信号频谱一致。幅频特性中,低频部分保持清 晰,未观察到任何能量的叠加或畸变。
        结论: 高采样频率可以完全捕获信号中的所有频率分量,频谱恢复完整。实验验证了时域采样 理论的正确性,并说明满足奈奎斯特定理的采样频率可避免频谱混叠。
2. 采样频率接近奈奎斯特频率(300 Hz)
        当采样频率 Fs 略高于 2Fmax 时,频谱混叠的风险较低,主频分量可以较好地保留。
        实验现象:        
        主频率分量仍可正确解析。可能在高频部分出现轻微的频谱泄漏现象,但整体幅频特性图较为 清晰,能反映信号主要的频率信息。
        结论: 虽然存在轻微频谱泄漏,但信号的主频分量仍然可识别。这表明当采样频率接近奈奎斯 特频率时,采样信号的频谱仍然可以近似还原原信号的频率特性,符合时域采样理论。
3. 采样频率低于奈奎斯特频率(200 Hz)
        当采样频率 Fs≤2Fmax 时,高频分量折叠到低频区域,导致频谱混叠。这种混叠会使信号无法 正确解析出原始的频谱特性。
        实验现象:
        频谱中观察到高频分量叠加到低频部分,造成显著的频谱失真。原始信号的频谱无法完整恢复。
        结论: 当采样频率低于奈奎斯特频率时,信号频谱发生混叠,丢失高频信息。这验证了时域采 样理论对采样频率的要求:采样频率必须满足 Fs 大于等于 2Fmax 才能避免混叠失真。

第二题:

结果:

代码:

%% 定义信号 x(n)
n = 0:31;

x(1:14) = (0:13) + 1;           % 设置 x(n) = n + 1, 当 0 <= n <= 13
x(15:27) = 27 - (14:26);         % 设置 x(n) = 27 - n, 当 14 <= n <= 25
x(28:32) = 0;
X_FT = fft(x,512);
% 计算 32 点 DFT
X_32 = X_FT(1:512/32:end);
% 提取偶数点得到 16 点频谱采样
X_16 = X_32(1:2:end);
% 计算 16 点 IDFT 重建信号
x_16_reconstructed = ifft(X_16, 16);
x_32_reconstructed = ifft(X_32,32);
% 绘制结果
figure(2);

%% 原信号 x(n)
subplot(3, 2, 1);
stem(n, x, '.');
title('原始信号 x(n)');
xlabel('n');
ylabel('x(n)');

% 原信号的频谱
subplot(3, 2, 2);
k = 0:511; 
plot(k*2/512, abs(X_FT));
title('原信号的频谱');
xlabel('频率');
ylabel('幅度');

%% 16 点频谱幅度
subplot(3, 2, 3);
stem(0:15, abs(X_16), '.');
title('16 点频谱幅度 |X_{16}(k)|');
xlabel('k');
ylabel('|X_{16}(k)|');

% 16 点 IDFT 重建信号
subplot(3, 2, 4);
stem(0:15, real(x_16_reconstructed), '.');
title('16 点 IDFT 重建信号 x_{16}(n)');
xlabel('n');
ylabel('x_{16}(n)');
xlim([0,31]);


%% 32 点频谱幅度
subplot(3, 2, 5);
stem(0:31, abs(X_32), '.');
title('32 点频谱幅度 |X_{32}(k)|');
xlabel('k');
ylabel('|X_{32}(k)|');


% 32 点 IDFT 重建信号
subplot(3, 2, 6);
stem(0:31, real(x_32_reconstructed), '.');
title('32 点 IDFT 重建信号 x_{32}(n)');
xlabel('n');
ylabel('x_{32}(n)');



分析:

1.32 点频域采样结果的分析
        实验结果:
        频谱 保持完整,包含所有的频率成分 IDFT 重建的信号与原始信号完全一致
        结论:
        当频域的采样点数 N≥M(信号长度)时,频域采样的频谱能够完整反映信号的所有频率信息。
        IDFT 重建时,自动在时域信号尾部补零,保证了重建信号的准确性。
        此结果验证了频域采样理论在 N≥M 的正确性
2.16 点频域采样结果的分析
        频谱 缩短一半,部分高频分量被丢失。 IDFT 重建的信号 长度为 16,且与原始信号 x(n)明显不同
        结论:
  1. 当频域采样点数 N<M 时,频谱截断导致高频信息丢失。
  2. IDFT 重建的时域信号发生混叠,长度也不足以覆盖原信号。
  3. 此结果验证了频域采样理论在 N<M 情况下的失效及失真的具体表现

第三题:

结果:

代码:

% 读取音频文件
[xn, fs] = audioread('motherland.wav');

% 截取第 1000 到 2999 共 2000 个采样点
x_segment = xn(1000:2999);

% 参数设置
N = 2000;  % 原始数据点数
N_downsampled = 1000;  % 抽取后的数据点数

% (1) 分析 2000 采样点的幅度频谱
X_2000 = fft(x_segment, N);     % 对 2000 点数据进行 FFT
f_2000 = (0:N-1) * (fs / N);    % 频率轴
M_2000 = abs(X_2000);           % 幅度谱

% 绘制 2000 采样点的幅度频谱
figure(3);
subplot(2, 1, 1);
plot(f_2000, M_2000);
title('2000 采样点的频谱幅度');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on;

% (2) 对 2000 个采样点数据每 2 个点抽取 1 点,得到 1000 点数据
x_downsampled = x_segment(1:2:end);

% 对抽取后的 1000 点数据进行 FFT
X_1000 = fft(x_downsampled, N_downsampled);
f_1000 = (0:N_downsampled-1) * (fs / 2 / N_downsampled); % 新的频率轴(采样频率减半)
M_1000 = abs(X_1000);            % 幅度谱

% 绘制抽取后 1000 采样点的幅度频谱
subplot(2, 1, 2);
plot(f_1000, M_1000);
title('抽取后 1000 采样点的频谱幅度');
xlabel('频率 (Hz)');
ylabel('幅度');
grid on;

思考题:

相关文章:

  • 数据结构(蓝桥杯常考点)
  • 我的AI工具箱Tauri版-建筑平面图生成装修设计
  • Flutter:StatelessWidget vs StatefulWidget 深度解析
  • 如何修复“RPC 服务器不可用”错误
  • 第三章 数据结构基础
  • 云原生周刊:Istio 1.25.0 正式发布
  • PPT内视频播放无法播放的原因及解决办法
  • Maven Deploy Plugin如何使用?
  • c++介绍锁 一
  • STM32基础教程--旋转编码器计数实验
  • 一文了解汽车图像传感器
  • 爱普生可编程晶振SG-8200CJ特性与应用
  • 狮子座大数据分析(python爬虫版)
  • 前端开发定时器的一些规范使用
  • 数据库的搭建
  • SpringBoot3.3.0集成Knife4j4.5.0实战
  • KidneyTalk-open系统,RAG在医疗场景的真实落地:用于解决肾脏疾病的医疗问答问题
  • vue3深入组件——依赖注入
  • 基于YOLO(以YOLOv8为例)模型开发算法的详细步骤,包含算法代码、训练指导、数据集准备以及可能的改进方向
  • 【C】链式二叉树算法题2
  • 俄外长与美国务卿通电话,讨论俄美接触等问题
  • 解锁儿时愿望!潘展乐战胜孙杨,全国冠军赛男子400自夺冠
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”
  • 流失79载,国宝文物“子弹库帛书”(二、三卷)回归祖国
  • 张巍任中共河南省委副书记
  • 新城悦服务:独董许新民辞任,新任独董与另两人组成调查委员会将调查与关联方资金往来