数字信号处理实验(一)

实验目的

本次实验目的为:在matlab环境下产生几种基本的数字信号,并对这些基本的信号进行运算和变换,同时利用程序结果对采样定理进行验证,深刻理解采样定理。通过自己录制音频信号并对不同的音频信号进行不同处理,加深理解音频信号中声道的原理,以及混声、回声的形成原理。

实验内容

  1. 用matlab产生单位脉冲信号,单位阶跃信号,矩形信号,正弦信号,余弦信号,指数信号,产生并观察f(x)=sinc(x)函数的波形。
  2. 利用matlab实现离散时间信号的代数运算,移位运算,翻折运算,卷积运算,差分变换和比例变换。
  3. 采样定理的验证
    探究采样对信号重构的影响,截频对信号重构的影响。
  4. 音频实验

实验结果分析

1. 用matlab产生单位脉冲信号,单位阶跃信号,矩形信号,正弦信号,余弦信号,指数信号,产生并观察f(x)=sinc(x)函数的波形。

单位脉冲
单位阶跃
图(a)表示的是单位脉冲序列,图(b)表示的是单位阶跃序列,单位脉冲序列在0处的值为1,在其他点处的值都为0;单位阶跃序列在大于或等于0的点处值为1,其他点处的值都为0。
矩形序列
[正弦序列

图(c)表示矩形序列,矩形序列在20-30之间的取值为1,其他点取值为0;图(d)表示正弦序列,正弦序列是有明显的周期性。
实指数序列
复指数序列
图(e)表示的是实指数序列,其函数原型是 f(x)=(5/4)x 图(f)表示的是复指数序列,其中四个子图分别表示复指数序列的实部序列、虚部序列、模值序列和相角序列。其函数原型是 f(x)=(0.8eπi/4)x
sinc函数
图(g)表示的是sinc函数,sinc函数的原型是 f(x)=sin(x)/x ,数学分析中,经过对sin(x)在0处泰勒展开,可以得到sinc函数在0处的值为1。

2. 利用matlab实现离散时间信号的代数运算,移位运算,翻折运算,卷积运算,差分变换和比例变换。

移位操作
序列翻折
图(a)表示的是单位脉冲序列的移位,左子图是原始序列,右子图是向右移位5个单位的序列。图(b)是单位阶跃序列翻折后的序列。从负无穷到0的值是1,其他点的值都为0。
序列相加
序列卷积
图(c)表示序列1和序列2相加后的效果图,序列1是正弦序列,序列的函数原型是 f(x)=0.3sin(πx/6) ;序列2是余弦序列,序列的函数原型是 f(x)=0.2cos(πx/4) ,图(d)表示序列卷积。

3. 采样定理的验证

探究采样对信号重构的影响,截频对信号重构的影响。
首先对信号采取不同频率的采样,临界采样是奈奎斯特临界值,实验中分别对过采样,欠采样和临界采样三种情形进行了实验,实验结果如下图。
欠采样
临界采样
图(a)表示欠采样的情况,图(b)表示临界采样,绿色粗线表示原始信号,黑色细线表示采样后重构的信号,从欠采样和临界采样的实验结果中我们观察到:欠采样重构后的信号和原始信号有一定的差别,而临界采样重构后信号和原始信号近似相同。
过采样
临界采样
图(c)表示的是过采样情况,图(d)表示的是临界采样情况,绿色粗线表示原始信号,黑色细线表示采样后重构的信号。从两种采样实验结果中可以看出:两种采样后重构后的信号都和原始信号近似相同。
通过此次试验,我们对采样定理有了更深的认识。采样频率必须大于二倍信号谱的最高频率。
下面我们对解频对采样的影响进行分析。实验信号是 f(t)=1(1t1) 实验信号频谱是 F(w)=2sin(w)/w
原始采样
信号频谱
图(a)是原始信号,图(b)是信号的频谱。
这里写图片描述
重构后的信号
图(c)表示采样截频ws = 1000时的采样信号序列,图(d)是ws = 1000 时的重构后的信号,可以看出当ws的值取1000时,采样过程只能近似取到0附近的信号。
这里写图片描述
重构
图(e)和图(f) 是截止频率为 时的采样序列和重构信号,可以看出此时要比ws = 1000 时更接近原信号。

4. 音频实验

音频获取:使用matlab函数wavrecord()录制两端声音信号,设置录制频率FS=11025,并用wavplay()函数进行播放,使用wavwrite()函数将录制的音频文件存储为后缀名为wav的音频文件。
函数操作
音频信号处理:将获取的音频信号进行数字化处理
首先画出两端信号的时域频谱图:
两段信号的时域图
上面子图a music是a.wav文件的时域频谱图,下面子图b music是b.wav文件的时域频谱图。下面将两段声音信号进行合成,生成混音信号、和回声信号。

混声信号
回声信号
混声的产生是将两种声音信号线性变化得到的,此次实验中y1的系数为1,y2的系数为0.3。然后对产生的新信号进行归一化形成图5.1的混声。回声的产生原理是将不同时间段的声音信号进行线性变化。首先产生回声信息,然后将回声信息和原信息进行混合,就得到了回声信息。

总结

经过此次实验,学会使用matlab工具进行基本的信号处理。首先仿真出不同基本序列的图形,其次对奈奎斯特采样定理进行实验探究,进一步以实验的方式验证了奈奎斯特采样定理。同时又对截止频率对采样的影响进行了实验分析。最后实践操作录制音频信息,并进行混音、回声等操作。通过这次测试技术的实验,使我学到了不少实用的知识,更重要的是做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们受益匪浅。

### 回答1: 相位编码矩形脉冲信号是指通过改变矩形脉冲信号的相位来对信息进行编码。在Matlab中,我们可以通过以下步骤实现相位编码矩形脉冲信号。 首先,我们需要定义个矩形脉冲信号,可以使用矩形函数rectpuls()来生成。 rectpuls(t, width)函数可以用来生成个指定宽度的矩形脉冲信号,其中t表示时间变量,width表示脉冲宽度。 接下来,我们需要选择个相位值,可以用变量phase表示。相位值决定了信号的起始点。 我们可以使用相位偏移函数,将矩形脉冲信号进行相位偏移,生成相位编码矩形脉冲信号。 y = rectpuls(t - phase, width)函数可以生成相位编码矩形脉冲信号,其中t - phase表示相位偏移。 最后,我们可以通过绘图函数plot()将生成的相位编码矩形脉冲信号进行可视化展示。 plot(t, y)函数可以绘制信号的图形,其中t表示时间变量,y表示相位编码矩形脉冲信号。 综上所述,在Matlab中实现相位编码矩形脉冲信号的步骤包括:定义矩形脉冲信号、选择相位值、进行相位偏移、绘图展示。这些步骤可以帮助我们实现相位编码矩形脉冲信号的仿真和分析。 ### 回答2: 相位编码矩形脉冲信号也被称为相位调制,是种将信息信号转换为脉冲宽度调制的技术。在MATLAB中,我们可以使用些函数和工具来生成和分析相位编码矩形脉冲信号。 首先,我们可以使用`rectpulse`函数生成个矩形脉冲信号。该函数的输入参数包括脉冲宽度、脉冲周期和采样频率等。例如,我们可以生成个宽度为1个周期的矩形脉冲信号: ``` T = 1; % 脉冲周期 width = T; % 脉冲宽度 fs = 1000; % 采样频率 t = 0:1/fs:T-1/fs; % 时间序列 x = rectpulse(1, width, t); % 生成矩形脉冲信号 ``` 接下来,我们可以通过改变脉冲的相位来实现相位编码。具体来说,我们可以利用相位的变化来表示不同的信息。例如,当脉冲相位为0时,可以表示数字0;当脉冲相位为π/2时,可以表示数字1。 为了改变脉冲的相位,我们可以利用`phasor`函数生成个信号,然后将其与矩形脉冲信号进行相乘,从而改变脉冲的相位。例如,让我们将脉冲的相位设置为π/4: ``` phase = pi/4; % 脉冲相位 ph = phasor(T, fs); % 生成相位信号 x_phase = x .* ph; % 改变脉冲的相位 ``` 最后,我们可以使用`plot`函数将生成的相位编码矩形脉冲信号进行可视化展示: ``` figure; subplot(2,1,1); plot(t, x); title('原始矩形脉冲信号'); xlabel('时间'); ylabel('幅度'); subplot(2,1,2); plot(t, x_phase); title('相位编码矩形脉冲信号'); xlabel('时间'); ylabel('幅度'); ``` 通过这些步骤,我们可以使用MATLAB生成和分析相位编码矩形脉冲信号。当然,这只是其中的种方法,具体的实现还可以根据具体的需求和算法进行调整。 ### 回答3: 相位编码矩形脉冲信号是种数字通信中常用的调制方式。Matlab提供了些函数和工具箱来生成和分析相位编码矩形脉冲信号。 首先,我们可以使用Matlab中的rectpulse函数生成相位编码矩形脉冲信号。该函数可以设置脉冲的宽度、采样频率和码元数量等参数。例如,我们可以使用以下代码生成个宽度为T的矩形脉冲信号: T = 1; % 脉冲宽度 Fs = 100; % 采样频率 numBits = 10; % 码元数量 pulse = rectpulse(1, T*Fs, numBits); 生成的pulse变量即为相位编码矩形脉冲信号。 除了生成信号,Matlab还提供了些工具箱来分析相位编码矩形脉冲信号。例如,我们可以使用Matlab的DSP工具箱来进行频域分析。以下是个简单的例子: T = 1; % 脉冲宽度 Fs = 100; % 采样频率 numBits = 10; % 码元数量 pulse = rectpulse(1, T*Fs, numBits); % 频谱分析 freqDomain = fft(pulse); L = length(pulse); f = Fs*(0:(L/2))/L; amplitude = abs(freqDomain/L); plot(f, amplitude(1:L/2+1)); title('频谱分析'); xlabel('频率(Hz)'); ylabel('幅度'); 运行以上代码,将会显示出相位编码矩形脉冲信号的频谱图。 总之,Matlab提供了丰富的函数和工具箱来生成和分析相位编码矩形脉冲信号。通过使用这些函数和工具箱,我们可以轻松创建和分析相位编码矩形脉冲信号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值