五、实验要求
(1) 在计算机中输入程序,验证实验结果,并将实验结果记录下来,经过分析、比较来完成实验报告。讲到这里,我需要大家按照毕业论文的格式要求来写一份实验报告。什么实验呢?等看到最后自然知晓。
(2) 对于设计性实验,应自行编制完整的实验程序,重复验证性实验的过程,并在实验报告中给出完整的自编程序。
六、思考题
函数conv既不给出也不接受任何时间信息,怎样才能得到卷积以后的时间信息(即卷积的起点和终点)? 请利用卷积函数编写一个可以得到时间信息的改进程序。
在 MATLAB 中,可以通过以下步骤计算卷积及其时间信息:
使用 conv
函数计算卷积结果。
根据输入信号的时间向量计算卷积结果的时间向量。
正弦波与 sinc 函数卷积,比较不同频率信号的卷积结果。看看代码怎么写?
% 演示正弦波与sinc函数的卷积效果,并比较不同频率正弦波的卷积结果。
% 通过本程序,学生可以直观看到sinc函数的滤波效果,
% 以及不同频率正弦波信号在通过sinc滤波器后的变化。
% 2025-3-19
clear,clc,close;
% 教材上的sinc函数
t=(0:0.001:2.5);
x=linspace(-5,5);
y=sinc(x);
plot(x,y);
title('Sinc函数');
xlabel('时间(t)');
ylabel('幅值(f)');
% 定义参数
Fs = 8192; % 采样频率
T = 2/Fs; % 采样间隔
L = 10000; % 信号长度
t = (0:L-1)*T; % 时间向量
% 定义不同频率的正弦波
f1 = 50; % 低频正弦波频率
f2 = 450; % 高频正弦波频率
sin_wave_low = sin(2*pi*f1*t);
% 低频正弦波
sin_wave_high = sin(2*pi*f2*t);
% 高频正弦波
sin_wave = sin_wave_low + sin_wave_high;
% 双音正弦波
% 定义sinc函数
sinc_cutoff = 200; % sinc函数的截止频率
sinc_t = -0.1:T:0.1; % sinc函数的时间范围
sinc_wave = sinc(2*sinc_cutoff*sinc_t); % sinc函数
% 卷积
conv_low = conv(sin_wave_low, sinc_wave, 'same');
% 低频正弦波与sinc卷积
conv_high = conv(sin_wave_high, sinc_wave, 'same');
% 高频正弦波与sinc卷积
conv_sin = conv(sin_wave, sinc_wave, 'same');
% 双音正弦波与sinc卷积
sound(conv_high)
freqz(sinc_wave) % 幅频响应 后面会学到
% 绘制结果
figure
% 原始低频正弦波
subplot(3, 1, 1);
plot(t, sin_wave_low);
title(['低频正弦波 (', num2str(f1), ' Hz)']);
xlabel('时间 (s)');
ylabel('幅度');
% 低频正弦波与sinc卷积结果
subplot(3, 1, 2);
plot(t, conv_low);
title('低频正弦波与sinc卷积结果');
xlabel('时间 (s)');
ylabel('幅度');
% 高频正弦波与sinc卷积结果
subplot(3, 1, 3);
plot(t, conv_sin);
title('双音正弦波与sinc卷积结果');
xlabel('时间 (s)');
ylabel('幅度');
% 显示sinc函数
figure
plot(sinc_t, sinc_wave);
title('sinc函数');
xlabel('时间 (s)');
ylabel('幅度');
录一段语音或者清唱一段流行歌曲,通过回响器,观察声音的变化!带着同学们感受声音处理的奇妙,增加学习仿真的兴趣!那什么是回响器?这就是本次课程实验的内容。下一篇文章老师会详细讲解并公布我写的代码,不过要请同学们先进行尝试!未完,待续!
修订记录
20250223 完成初稿;
20250325 修订内容;