数字信号处理Matlab实现实例(推荐给学生)
Matlab中的数字信号处理方法与实例
![Matlab中的数字信号处理方法与实例](https://img.taocdn.com/s3/m/a405b575ff4733687e21af45b307e87101f6f805.png)
Matlab中的数字信号处理方法与实例数字信号处理是一门研究数字信号在数字域中分析、处理和改变的学科。
Matlab是一种强大的数值计算工具,被广泛应用于信号处理领域。
本文将介绍一些在Matlab中常用的数字信号处理方法与实例,并通过实例来展示它们的应用。
1. 信号的采样与重构信号采样是指将连续时间信号转化为离散时间信号的过程。
在Matlab中,我们可以使用“sample”函数对信号进行采样,并使用“hold”函数对采样后的信号进行重构。
下面是一个示例:```matlabfs = 100; % 采样频率t = 0:1/fs:1; % 时间序列x = sin(2*pi*5*t); % 原始信号subplot(2,1,1);plot(t,x);title('原始信号');xlabel('时间');ylabel('幅值');subplot(2,1,2);stem(t,x);title('采样和重构后的信号');xlabel('时间');ylabel('幅值');```在这个例子中,我们生成了一个频率为5Hz的正弦信号,然后对该信号进行采样和重构。
从结果可以看出,原始信号和重构后的信号基本上是一致的。
2. 信号的频谱分析频谱分析是指将信号从时域转换到频域的过程,可以用来分析信号的频率成分。
在Matlab中,我们可以使用“fft”函数对信号进行傅里叶变换,并使用“abs”函数获取信号的幅度谱。
下面是一个示例,演示如何对信号进行频谱分析:```matlabfs = 100; % 采样频率t = 0:1/fs:1; % 时间序列x = sin(2*pi*5*t); % 原始信号N = length(x); % 信号长度X = fft(x); % 傅里叶变换f = (0:N-1)*(fs/N); % 频率坐标plot(f,abs(X));title('信号的频谱');xlabel('频率');ylabel('幅度');```在这个示例中,我们同样生成了一个频率为5Hz的正弦信号,然后对该信号进行傅里叶变换,并绘制出信号的频谱图。
第2章 基于MATLAB实现的数字信号处理实验
![第2章 基于MATLAB实现的数字信号处理实验](https://img.taocdn.com/s3/m/6bb7eec80508763231121203.png)
x 2(n)
5
0 -5
0
5
10 n
15
20
25
30
1 0.5
h(n)
0 -0.5 -1 -5
0
5
10 n
15
20
25
30
第2章 基于MATLAB实现的数字信号处理实验
2.2 离散信号的分析
四、实验思考题
1. 思考序列相关性的应用?
五、实验报告要求
1. 2. 简述实验目的及实验原理。 按实验步骤附上实验过程中的信号序列、系统单位脉冲响应及 系统响应序列的时域和幅频特性曲线,并对所得结果进行分析 和解释。 总结实验中的主要结论。 简要回答实验思考题。
第2章 基于MATLAB实现的数字信号处理实验
2.3 验证采样定理
三、实验步骤
2. 实验内容2(3)的程序运行结果如下图所示:
Reconstruction of x a(t) when Ts=0.01 1
x a(t)
0 -1 0 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Reco
2.4 应用FFT实现信号频谱分析
三、实验步骤
3. 实验内容1的程序运行结果如下图所示:
15 10
5
0 -6
-4
-2
0
2
4
6
4 2 0 -2 -4 -6
-4
-2
0
2
4
6
第2章 基于MATLAB实现的数字信号处理实验
2.4 应用FFT实现信号频谱分析
三、实验步骤
4. 实验内容2的程序运行结果如下图所示:
n
第2章 基于MATLAB实现的数字信号处理实验
matlab数字信号处理85个实用案例精讲
![matlab数字信号处理85个实用案例精讲](https://img.taocdn.com/s3/m/62a41a02b80d6c85ec3a87c24028915f804d84b8.png)
matlab数字信号处理85个实用案例精讲MATLAB数字信号处理85个实用案例精讲MATLAB是一种强大的数学软件,广泛应用于数字信号处理领域。
本文将介绍85个实用案例,涵盖了数字信号处理的各个方面,包括信号生成、滤波、频谱分析、时频分析、数字滤波器设计等。
1. 信号生成案例:生成正弦信号在MATLAB中,可以使用sin函数生成正弦信号。
例如,生成频率为100Hz,幅度为1的正弦信号,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);2. 滤波案例:低通滤波低通滤波器可以滤除高频信号,保留低频信号。
在MATLAB中,可以使用fir1函数设计低通滤波器。
例如,设计截止频率为100Hz的低通滤波器,代码如下:fs = 1000;fc = 100;N = 100;b = fir1(N, fc/(fs/2), 'low');3. 频谱分析案例:计算功率谱密度功率谱密度是信号在频域上的能量分布。
在MATLAB中,可以使用pwelch函数计算功率谱密度。
例如,计算频率为100Hz的正弦信号的功率谱密度,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);[Pxx, f] = pwelch(x, [], [], [], 1000);4. 时频分析案例:计算短时傅里叶变换短时傅里叶变换可以分析信号在时间和频率上的变化。
在MATLAB中,可以使用spectrogram函数计算短时傅里叶变换。
例如,计算频率为100Hz的正弦信号的短时傅里叶变换,代码如下:t = 0:0.001:1;f = 100;x = sin(2*pi*f*t);spectrogram(x, [], [], [], 1000, 'yaxis');5. 数字滤波器设计案例:设计巴特沃斯滤波器巴特沃斯滤波器是一种常用的数字滤波器,可以实现平滑滤波和带通滤波。
数字信号处理Matlab实现实例
![数字信号处理Matlab实现实例](https://img.taocdn.com/s3/m/2f36fd431eb91a37f1115ca1.png)
数字信号处理Matlab 实现实例第1章离散时间信号与系统例1-1 用MATLAB计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。
解 MATLAB程序如下:a=[-2 0 1 -1 3];b=[1 2 0 -1];c=conv(a,b);M=length(c)-1;n=0:1:M;stem(n,c);xlabel('n'); ylabel('幅度');图1.1给出了卷积结果的图形,求得的结果存放在数组c中为:{-2 -4 1 3 1 5 1 -3}。
例1-2 用MATLAB计算差分方程当输入序列为时的输出结果。
解 MATLAB程序如下:N=41;a=[0.8 -0.44 0.36 0.22];b=[1 0.7 -0.45 -0.6];x=[1 zeros(1,N-1)];k=0:1:N-1; y=filter(a,b,x);stem(k,y)xlabel('n');ylabel('幅度')图 1.2 给出了该差分方程的前41个样点的输出,即该系统的单位脉冲响应。
例1-3 用MATLAB 计算例1-2差分方程所对应的系统函数的DTFT 。
解 例1-2差分方程所对应的系统函数为:1231230.80.440.360.02()10.70.450.6z z z H z z z z -------++=+--其DTFT 为23230.80.440.360.02()10.70.450.6j j j j j j j e e e H e e e e ωωωωωωω--------++=+--用MATLAB 计算的程序如下:k=256;num=[0.8 -0.44 0.36 0.02];den=[1 0.7 -0.45 -0.6];w=0:pi/k:pi;h=freqz(num,den,w);subplot(2,2,1);plot(w/pi,real(h));gridtitle('实部')xlabel('\omega/\pi');ylabel('幅度') subplot(2,2,2);plot(w/pi,imag(h));gridtitle('虚部')xlabel('\omega/\pi');ylabel('Amplitude') subplot(2,2,3);plot(w/pi,abs(h));gridtitle('幅度谱')xlabel('\omega/\pi');ylabel('幅值') subplot(2,2,4);plot(w/pi,angle(h));gridtitle('相位谱')xlabel('\omega/\pi');ylabel('弧度')第2章离散傅里叶变换及其快速算法例2-1对连续的单一频率周期信号按采样频率采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。
使用MATLAB进行数字信号处理的实例介绍
![使用MATLAB进行数字信号处理的实例介绍](https://img.taocdn.com/s3/m/ee7544aedc88d0d233d4b14e852458fb770b3889.png)
使用MATLAB进行数字信号处理的实例介绍引言:数字信号处理(Digital Signal Processing, 简称DSP)是一门研究如何以数字形式对信号进行采样、分析和处理的学科。
随着数字技术的快速发展,MATLAB作为一种强大的工具,被广泛应用于数字信号处理的研究和实践中。
本文将通过一些实际例子,介绍如何使用MATLAB进行数字信号处理。
一、信号的采样与重构信号的采样与重构是数字信号处理的基础,它涉及到将连续时间信号转换为离散时间信号,并恢复出原始信号。
我们以音频信号为例,使用MATLAB进行信号采样与重构的处理。
1.1 采样:音频信号可以看作是时间上连续的波形,我们需要将其转换为离散形式。
在MATLAB中,可以使用"audioread"函数读取音频文件,并通过设定采样频率和采样位数,将连续的音频信号转换为离散形式。
1.2 重构:采样得到的离散信号需要恢复到连续形式,MATLAB中可以通过"audiowrite"函数将离散信号重新写入到音频文件,并设定采样频率和采样位数恢复出连续的音频信号。
二、傅里叶变换与频谱分析傅里叶变换是一种将信号从时域转换到频域的方法,它可以将信号分解成不同频率的正弦波成分。
频谱分析是数字信号处理中的重要方法,它可以帮助我们了解信号的频率成分和能量分布。
2.1 单频信号的傅里叶变换:我们以一个简单的单频信号为例,使用MATLAB进行傅里叶变换和频谱分析。
首先,我们可以通过构造一个正弦波信号,并设定频率、振幅和采样频率。
然后使用"fft"函数对信号进行傅里叶变换,得到频谱图。
2.2 音频信号的频谱分析:音频信号是复杂的多频信号,我们可以通过将其进行傅里叶变换,得到其频谱分析结果。
在MATLAB中,可以使用"fft"函数对音频信号进行傅里叶变换,并通过频谱图展示信号的频谱信息。
三、数字滤波器设计与应用数字滤波器是数字信号处理中的关键技术,可以帮助我们去除噪声、提取有效信息,满足不同的信号处理需求。
数字信号处理MATLAB实验
![数字信号处理MATLAB实验](https://img.taocdn.com/s3/m/4227c7a5ba1aa8114531d999.png)
实验一熟悉MATLAB环境一、实验目的(1)熟悉MATLAB的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB编程并学会创建函数。
(5)观察离散系统的频率响应。
二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。
在熟悉了MATLAB基本命令的基础上,完成以下实验。
上机实验内容:(1)数组的加、减、乘、除和乘方运算。
输入A=[1 2 3 4],B=[3 4 56],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。
(2)用MATLAB实现以下序列。
a)x(n)=0.8n 0≤n≤15b)x(n)=e(0.2+3j)n 0≤n≤15c)x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π) 0≤n≤15d)将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。
e)将c)中的x(n)扩展为以10为周期的函数x10(n)=x(n+10),绘出四个周期。
(3)x(n)=[1,-1,3,5],产生并绘出下列序列的样本。
a )x 1(n)=2x(n+2)-x(n-1)-2x(n)b )∑=-=51k 2)k n (nx (n) x(4)绘出下列时间函数的图形,对x 轴、y 轴以及图形上方均须加上适当的标注。
a) x(t)=sin(2πt) 0≤t ≤10s b) x(t)=cos(100πt)sin(πt) 0≤t ≤4s(5)编写函数stepshift(n0,n1,n2)实现u(n-n0),n1<n0<n2,绘出该函数的图形,起点为n1,终点为n2。
(6)给定一因果系统)0.9z 0.67z -1)/(1z 2(1H(z)-2-1-1+++=求出并绘制H(z)的幅频响应与相频响应。
(7)计算序列{8 -2 -1 2 3}和序列{2 3 -1 -3}的离散卷积,并作图表示卷积结果。
MATLAB 下的数字信号处理实现示例
![MATLAB 下的数字信号处理实现示例](https://img.taocdn.com/s3/m/a07e731eff00bed5b9f31dac.png)
MATLAB 下的数字信号处理实现示例附录一信号、系统和系统响应1、理想采样信号序列(1)首先产生信号x(n),0<=n<=50n=0:50; %定义序列的长度是50A=444.128; %设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001; %采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是MA TLAB 定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);(2 )绘制信号x(n)的幅度谱和相位谱k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)(3)改变参数为:A 1,α 0.4,Ω 2.0734,T 1n=0:50; %定义序列的长度是50A=1; %设置信号有关的参数a=0.4;T=1; %采样率w0=2.0734;x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是MA TLAB 定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)2、单位脉冲序列在MatLab 中,这一函数可以用zeros 函数实现:n=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB 中数组下标从1 开始x(1)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)3、矩形序列n=1:50x=sign(sign(10-n)+1);close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/25)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)4、特定冲击串:x(n) δ(n) +2.5δ(n −1) +2.5δ(n −2) +δ(n −3)n=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB 中数组下标从1 开始x(1)=1;x(2)=2.5;x(3)=2.5;x(4)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)+∞5、卷积计算:y (n) x(n) ∗h(n) ∑x(m)h(n −m)m −∞在MA TLAB 中。
《数字信号处理》Matlab实验
![《数字信号处理》Matlab实验](https://img.taocdn.com/s3/m/df9287a7581b6bd97e19ea22.png)
《数字信号处理》Matlab 实验一.离散信号的 FFT 分析1.用Matlab 编程上机练习。
已知:N=2^5。
这里Q=0.9+j0.3。
可以推导出 ,首先根据这个式子计算X(k)的理论值,然后计算输入序列x(n)的32个值,再利用基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值比较(要求计算结果最少6位有效数字)。
解:函数代码:>> function xn()>> format long>> q=0.9+0.3*i;>> wn=exp(-2*pi*i/32);>> xk=(1-q^32)./(1-q*wn.^[0:31])>>xn=q.^[0:31]>> xk1=fft(xn,32)>>diff=xk-xk1具体执行情况:>> function xn()format longq=0.9+0.3*i;wn=exp(-2*pi*i/32);xk=(1-q^32)./(1-q*wn.^[0:31])xk =Columns 1 through 20.5698 + 3.3840i 2.8369 + 8.8597iColumns 3 through 49.3189 - 9.8673i 1.2052 - 3.5439iColumns 5 through 61.8846 -2.0941i 0.8299 - 1.2413i11,011)()()(k k 10nk 10-=--===∑∑-=-=N k QW Q QW W n x k X N NnN N n N N n ,0.9214 - 1.0753i 0.3150 - 0.0644i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8513 - 0.6357i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8978i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3158i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6914i 0.3173 + 0.9841i Columns 21 through 220.8929 + 0.7792i 0.4066 + 0.8452i Columns 23 through 240.5847 + 0.9017i 0.9129 + 0.9283i Columns 25 through 260.0573 + 0.5531i 0.4219 + 0.9562i Columns 27 through 280.3298 + 0.3143i 0.4513 + 0.2638i0.7214 + 0.1879i 0.0933 + 1.7793iColumns 31 through 320.9483 + 1.9802i 0.4932 + 2.6347i>> xn=q.^[0:31]xn =Columns 1 through 21.0000 0.0000 + 0.0000i Columns 3 through 40.0000 + 0.0000i 0.0000 + 0.0000iColumns 5 through 60.0000 + 0.0000i -0.0000 + 0.0000iColumns 7 through 8-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 9 through 10-0.0000 + 0.0000i -0.0000 + 0.0000iColumns 11 through 12-0.0000 - 0.0000i -0.0000 - 0.0000iColumns 13 through 14-0.2000 - 0.4000i -0.3600 - 0.5200iColumns 15 through 16-0.9680 - 0.1760i 0.4816 - 0.3488i0.2381 - 0.2695i 0.2951 - 0.1711i Columns 19 through 200.1169 - 0.4655i 0.4449 - 0.9838i Columns 21 through 220.6955 + 0.2480i 0.5516 + 0.4319i Columns 23 through 240.3669 + 0.5542i 0.9639 + 0.2088i Columns 25 through 260.3049 + 0.9771i -0.5187 + 0.4709i Columns 27 through 28-0.6081 + 0.2682i -0.1278 + 0.5589i Columns 29 through 30-0.4827 + 0.0647i -0.6538 + 0.5134i Columns 31 through 32-0.8425 - 0.4341i -0.1280 - 0.1434i >> xk1=fft(xn,32)xk1 =Columns 1 through 20.5698 + 3.3839i 2.8366 + 8.8599i Columns 3 through 49.3182 - 9.8692i 1.2051 - 3.5439i1.8845 -2.0942i 0.8298 - 1.2413i Columns 7 through 80.9213 - 1.0754i 0.3150 - 0.0645i Columns 9 through 100.9240 - 0.8060i 0.4202 - 0.2158i Columns 11 through 120.8514 - 0.6356i 0.5040 - 0.1701i Columns 13 through 140.6217 - 0.6931i 0.2441 - 0.8977i Columns 15 through 160.9454 - 0.2800i 0.7139 - 0.3159i Columns 17 through 180.6723 - 0.6496i 0.0263 + 0.5093i Columns 19 through 200.5671 + 0.6913i 0.3172 + 0.9840i Columns 21 through 220.8929 + 0.7792i 0.4065 + 0.8452i Columns 23 through 240.5846 + 0.9016i 0.9129 + 0.9283i Columns 25 through 260.0572 + 0.5531i 0.4219 + 0.9563i0.3297 + 0.3144i 0.4512 + 0.2638iColumns 29 through 300.7213 + 0.1879i 0.0932 + 1.7793iColumns 31 through 320.9480 + 1.9802i 0.4928 + 2.6347i>> diff=xk-xk1diff =1.0e-013 *Columns 1 through 20.4625 + 0.8501i 0.9504 - 0.4003iColumns 3 through 40.6010 + 0.4028i 0.4752 + 0.7001iColumns 5 through 60.5502 + 0.8501i 0.4625 + 0.8501iColumns 7 through 80.7751 + 0.9250i 0 + 0.3875i Columns 9 through 100.7751 - 0.4625i 0.3126 - 0.4625iColumns 11 through 12-0.4625 - 0.3126i 0.4625 + 0.3875iColumns 13 through 14-0.9250 + 0.6938i 0.3875 - 0.0781iColumns 15 through 160.3875 - 0.6156i 0 + 0.9641iColumns 17 through 180.9250 - 0.7598i -0.4625 - 0.0422iColumns 19 through 200.4625 + 0.1172i 0.4625 + 0.3094iColumns 21 through 220.9250 + 0.4625i 0.9250 + 0.2313iColumns 23 through 240.3875 + 0.1563i 0.3875 - 0.2313iColumns 25 through 260.8501 -0.9250 - 0.4625iColumns 27 through 280.0127 - 0.7751i 0.7001 - 0.9250iColumns 29 through 300.1626 0.7814 - 0.9250iColumns 31 through 320.4816 + 0.9250i 0.7255 - 0.8501i由以上结果可知,由基2时间抽选的FFT算法所得到的DFT结果与利用公式法所得的理论值稍有偏差,但误差较小,从结果可以看出大概在小数点第15位才开始出现误差,故而用计算机FFT处理数据在精度上是可以接受的。
数字信号处理实验(吴镇扬版)matlab程序
![数字信号处理实验(吴镇扬版)matlab程序](https://img.taocdn.com/s3/m/af3e65f5f90f76c661371af4.png)
(1)数组的加、减、乘、除和乘方运算。
输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。
clear all;a=[1 2 3 4];b=[3 4 5 6];c=a+b;d=a-b;e=a.*b;f=a./b;g=a.^b;n=1:4;subplot(4,2,1);stem(n,a);xlabel('n');xlim([0 5]);ylabel('A');subplot(4,2,2);stem(n,b);xlabel('n');xlim([0 5]);ylabel('B');subplot(4,2,3);stem(n,c);xlabel('n');xlim([0 5]);ylabel('C');subplot(4,2,4);stem(n,d);xlabel('n');xlim([0 5]);ylabel('D');subplot(4,2,5);stem(n,e);xlabel('n');xlim([0 5]);ylabel('E');subplot(4,2,6);stem(n,f);xlabel('n');xlim([0 5]);ylabel('F');subplot(4,2,7);stem(n,g);xlabel('n');xlim([0 5]);ylabel('G');(2)用MATLAB实现下列序列:a) x(n)=0.8n 0≤n≤15b) x(n)=e(0.2+3j)n 0≤n≤15c) x(n)=3cos(0.125πn+0.2π)+2sin(0.25πn+0.1π) 0≤n≤15d) 将c)中的x(n)扩展为以16为周期的函数x16(n)=x(n+16),绘出四个周期。
2012数字信号处理matlab实例
![2012数字信号处理matlab实例](https://img.taocdn.com/s3/m/ee6efd30376baf1ffc4fadaf.png)
数字信号处理课程设计第一次上机实验目的:熟悉Matlab环境、序列赋值、序列基本运算、掌握图形显示实验内容:1、序列的相加和相乘给出两个序列x1(n)和x2(n):x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6];x2=[2,2,0,0,0,-2,-2];n2=[2:8];求它们的和ya及乘积yp。
【参考代码】% 离散信号序列的移位、相加和相乘x1=[0,1,2,3,4,3,2,1,0];ns1=-2; % 给定x1及ns1x2=[2,2,0,0,0,-2,-2]; ns2=2; % 给定x2及ns2nf1=ns1+length(x1)-1; nf2=ns2+length(x2)-1;ny= min(ns1,ns2):max(nf1,nf2); % y(n)的时间变量xa1 = zeros(1,length(ny)); xa2 = xa1; % 延拓序列初始化xa1(find((ny>=ns1)&(ny<=nf1)==1))=x1; % 给xa1赋值x1xa2(find((ny>=ns2)&(ny<=nf2)==1))=x2; % 给xa2 赋值x2ya = xa1 + xa2 % 序列相加yp = xa1.* xa2 % 序列相乘subplot(4,1,1), stem(ny,xa1,'.') % 绘图subplot(4,1,2), stem(ny,xa2,'.')line([ny(1),ny(end)],[0,0]) % 画x轴subplot(4,1,3), stem(ny,ya,'.')line([ny(1),ny(end)],[0,0]) % 画x轴subplot(4,1,4), stem(ny,yp,'.')line([ny(1),ny(end)],[0,0]) % 画x轴【运行结果】ya =0 1 2 3 6 5 2 1 0 -2 -2yp =0 0 0 0 8 6 0 0 0 0 02、序列的移位和周期延拓已知x(n)=0.8n R8(n),利用MATLAB生成并图示x(n),x(n-m),x((n))8R N(n)( x((n))8表示x(n)以8为周期的延拓)和x((n-m))8R N(n),其中N=24,m为一个整常数,0<m<N。
数字信号处理Matlab_实现实例(有用)
![数字信号处理Matlab_实现实例(有用)](https://img.taocdn.com/s3/m/ea4f6c98770bf78a652954cb.png)
数字信号处理Matlab_实现实例(有用)数字信号处理Matlab 实现实例离散时间信号与系统例1-1 用MATLAB计算序列 -2 0 1 –1 3 和序列 1 2 0 -1 的离散卷积解 MATLAB程序如下a [-2 0 1 -1 3]b [1 2 0 -1]c conv abM length c -1n 01Mstem ncxlabel n ylabel 幅度图11给出了卷积结果的图形求得的结果存放在数组c中为 -2 -4 1 3 1 5 1 -3例1-2 用MATLAB计算差分方程当输入序列为时的输出结果MATLAB程序如下N 41a [08 -044 036 022]b [1 07 -045 -06]x [1 zeros 1N-1 ]k 01N-1y filter abxstem kyxlabel n ylabel 幅度图 12 给出了该差分方程的前41个样点的输出即该系统的单位脉冲响应1-3 用MATLAB计算例1-2差分方程所对应的系统函数的DTFT1-2差分方程所对应的系统函数为其DTFT为用MATLAB计算的程序如下k 256num [08 -044 036 002]den [1 07 -045 -06]w 0pikpih freqz numdenwsubplot 221plot wpireal h gridtitle 实部xlabel \omega\pi ylabel 幅度subplot 222plot wpiimag h gridtitle 虚部xlabel \omega\pi ylabel Amplitudesubplot 223plot wpiabs h gridtitle 幅度谱xlabel \omega\pi ylabel 幅值subplot 224plot wpiangle h gridtitle 相位谱xlabel \omega\pi ylabel 弧度例2-1 对连续的单一频率周期信号按采样频率采样截取长度N分别选N 20和N 16观察其DFT结果的幅度谱解此时离散序列即k 8用MATLAB计算并作图函数fft用于计算离散傅里叶变换DFT程序如下k 8n1 [0119]xa1 sin 2pin1ksubplot 221plot n1xa1xlabel tT ylabel x nxk1 fft xa1 xk1 abs xk1subplot 222stem n1xk1xlabel k ylabel X kn2 [0115]xa2 sin 2pin2ksubplot 223plot n2xa2xlabel tT ylabel x nxk2 fft xa2 xk2 abs xk2 subplot 224stem n2xk2xlabel k ylabel X k 计算结果示于图21 a 和 b 分别是N 20时的截取信号和DFT结果由于截取了两个半周期频谱出现泄漏 c 和 d 分别是N 16时的截取信号和DFT结果由于截取了两个整周期得到单一谱线的频谱上述频谱的误差主要是由于时域中对信号的非整周期截断产生的频谱泄漏例2-2 用FFT计算两个序列的互相关函数解用MATLAB计算程序如下x [1 3 -1 1 2 3 3 1]y [2 1 -1 1 2 0 -1 3]k length xxk fft x2kyk fft y2krm real ifft conj xk ykrm [rm k22k rm 1k ]m -k1 k-1stem mrmxlabel m ylabel 幅度其计算结果如图22所示2-3计算两个序列的的互相关函数其中x n 2 3 5 2 1 –1 0 0 12 3 5 3 0 –1 –2 0 1 2 y n x n-4 e n e n MATLAB中可以用随机函数rand产生解用MATLAB计算程序如下x [2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]y [0 0 0 0 2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]k length ye rand 1k -05y yexk fft x2kyk fft y2krm real ifft conj xk ykrm [rm k22k rm 1k ]m -k1 k-1stem mrmxlabel m ylabel 幅度计算结果如图23 a 我们看到最大值出现在m 4处正好是y n x n 的延迟2 3 b 是x n 自相关函数他和y n y n 受到噪声的干扰第3章无限长单位脉冲响应 IIR 滤波器的设计方法例3-1 设采样周期T 250μs采样频率fs 4kHz用脉冲响应不变法和双线性变换法设计一个三阶巴特沃兹滤波器其3dB边界频率为fc 1kHz[BA] butter 32pi1000s[num1den1] impinvar BA4000[h1w] freqz num1den1[BA] butter 32000025s[num2den2] bilinear BA4000[h2w] freqz num2den2f wpi2000plot fabs h1 -fabs h2 -gridxlabel 频率Hzylabel 幅值dB程序中第一个butter的边界频率2π×1000为脉冲响应不变法原型低通滤波器的边界频率第二个butter的边界频率2T 2000025为双线性变换法原型低通滤波器的com这两种设计方法所得到的频响虚线为脉冲响应不变法的结果实线为双线性变换法的结果脉冲响应不变法由于混叠效应使得过渡带和阻带的衰减特性变差并且不存在传输零点同时也看到双线性变换法在z -1即ω π或f 2000Hz处有一个三阶传输零点这个三阶零点正是模拟滤波器在Ω ?处的三阶传输零点通过映射形成的例3-2 设计一数字高通滤波器它的通带为400,500Hz通带内容许有05dB的波动阻带内衰减在小于317Hz的频带内至少为19dB采样频率为1000Hz wc 21000tan 2pi400 21000wt 21000tan 2pi317 21000[Nwn] cheb1ord wcwt0519s[BA] cheby1 N05wnhighs[numden] bilinear BA1000[hw] freqz numdenf wpi500plot f20log10 abs haxis [0500-8010]gridxlabelylabel 幅度dB图32给出了MATLAB计算的结果可以看到模拟滤波器在Ω ?处的三阶零点通过高通变换后出现在ω 0z 1处这正是高通滤波器所希望得到的例3-3 设计一巴特沃兹带通滤波器其,dB边界频率分别为f2 110kHz和f190kHz在阻带f3 120kHz处的最小衰减大于,,dB采样频率fs 400kHz w1 2400tan 2pi90 2400w2 2400tan 2pi110 2400wr 2400tan 2pi120 2400[Nwn] buttord [w1 w2][0 wr]310s[BA] butter Nwns[numden] bilinear BA400[hw] freqz numdenf wpi200plot f20log10 abs haxis [40160-3010]gridxlabel 频率kHzylabel 幅度dB图33给出了MATLAB计算的结果可以看出数字滤波器将无穷远点的二阶零点映射为z ?1的二阶零点数字带通滤波器的极点数是模拟低通滤波器的极点数的两倍例3-4 一数字滤波器采样频率fs 1kHz要求滤除100Hz的干扰其,dB的边界频率为95Hz和105Hz原型归一化低通滤波器为w1 95500w2 105500[BA] butter 1[w1 w2]stop[hw] freqz BAf wpi500plot f20log10 abs haxis [50150-3010]gridxlabel 频率Hzylabel 幅度dB图34为MATLAB的计算结果第4章有限长单位脉冲响应 FIR 滤波器的设计方法 2 用凯塞窗设计一FIR 低通滤波器低通边界频率阻带边界频率阻带衰减不小于50dB解首先由过渡带宽和阻带衰减来决定凯塞窗的N和图41给出了以上设计的频率特性 a 为N 30直接截取的频率特性 b 为凯塞窗设计的频率特性凯塞窗设计对应的MATLAB程序为wn kaiser 30455nn [0129]alfa 30-1 2hd sin 04pi nn-alfa pi nn-alfah hdwn[h1w1] freqz h1plot w1pi20log10 abs h1axis [01-8010]gridxlabel 归一化频率ylabel 幅度dB例4-2 利用雷米兹交替算法设计一个线性相位低通FIR数字滤波器其指标为通带边界频率fc 800Hz阻带边界fr 1000Hz通带波动阻带最小衰减At 40dB采样频率fs 4000Hz解在MATLAB中可以用remezord 和remez两个函数设计其结果如图42MATLAB程序如下fedge [800 1000]mval [1 0]dev [00559 001]fs 4000[Nfptsmagwt] remezord fedgemvaldevfsb remez Nfptsmagwt[hw] freqz b1256plot w2000pi20log10 abs hgridxlabel 频率Hzylabel 幅度dB函数remezord中的数组fedge为通带和阻带边界频率数组mval是两个边界处的幅值而数组dev是通带和阻带的波动fs是采样频率单位为Hz 第5章数字信号处理系统的实现例5-1求下列直接型系统函数的零极点并将它转换成二阶节形式解用MATLAB计算程序如下num [1 -01 -03 -03 -02]den [1 01 02 02 05][zpk] tf2zp numdenm abs pdisp disp zdisp 极点 disp pdisp 增益系数 disp ksos zp2sos zpkdisp 二阶节 disp real soszplane numden输入到num和den的分别为分子和分母多项式的系数计算求得零极点增益系数和二阶节的系数零点09615-05730-01443 05850i-01443 - 05850i 极点05276 06997i05276 - 06997i-05776 05635i-05776 - 05635i增益系数1二阶节10000 -03885 -05509 10000 11552 0651110000 02885 03630 10000 -10552 07679系统函数的二阶节形式为极点图见图515-2 分析五阶椭圆低通滤波器的量化效应其截止频率为04 通带纹波为04dB最小的阻带衰减为50dB对滤波器进行截尾处理时使用函数a2dTm 解用以下MATLAB程序分析量化效应clf[ba] ellip 5045004[hw] freqz ba512g 20log10 abs hbq a2dT b5aq a2dT a5[hqw] freqz bqaq512gq 20log10 abs hqplot wpigbwpigqrgridaxis [0 1 -80 5]xlabel \omega\piylabel Gain dBlegend 量化前量化后figure[z1p1k1] tf2zp ba[z2p2k2] tf2zp bqaqzplaneplot [z1z2][p1p2] oxlegend 量化前的零点量化后的零点量化前的极点量化后的极点图51a表示系数是无限精度的理想滤波器的频率响应以实线表示以及当滤波器系数截尾到5位时的频率响应以短线表示由图可知系数量化对频带的边缘影响较大经系数量化后增加了通带的波纹幅度减小了过渡带宽并且减小了最小的阻带衰减图5 1b给出了系数量化以前和系数量化以后的椭圆低通滤波器的零极点位置由图可知系数的量化会使零极点的位置与它们的理想的标称位置相比发生显著的改变在这个例子中靠近虚轴的零点的位置变动最大并且移向靠它最近的极点的位置只要对程序稍作改变就可以分析舍入量化的影响为了研究二进制数量化效应对数字滤波器的影响首先需要将十进制表示的滤波器系数转换成二进制数并进行量化二进制数的量化既可以通过截尾法也可以通过舍入法实现我们提供了如下的两个MATLAB程序com这两段程序分别将向量d中的每一个数按二进制数进行截尾或舍入量化量化的精度是小数点以后保留b位量化后返回的向量为beqfunction beq a2dT dbbeq a2dT db 将十进制数利用截尾法得到b位的二进制数然后将该二进制数再转换为十进制数m 1 d1 abs dwhile fix d1 0d1 abs d 2mm m1endbeq fix d12bbeq sign d beq2 m-b-1 function beq a2dR dbbeq a2dR db 将十进制数利用舍入法得到b位的二进制数然后将该二进制数再转换为十进制数m 1 d1 abs dwhile fix d1 0d1 abs d 2mm m1endbeq fix d12b5beq sign d beq2 m-b-1 第7章多采样率信号处理例7-1在时域上显示一个信号频率为0042 的正弦信号然后以抽取因子3 降采样率并在时域上显示相应的结果比较两者在时域上的特点MATLAB计算程序如下M 3 down-sampling factor 3fo 0042signal frequency 0042generate the input sinusoidal sequencen 0N-1m 0NM-1x sin 2pifomgenerate the down-sampling squencey x [1Mlength x ]subplot 211stem nx 1Ntitle 输入序列xlabel 时间nylabel 幅度subplot 212stem nytitle [输出序列抽取因子为num2str M ]xlabel 时间n ylabel 幅度图71 信号频率为0042例7-2 用汉明窗设计一长度为32的线性相位QMF滤波器组解采用MATLAB设计调用fir2函数设计公共低通滤波器参数缺省即为汉明窗程序如下b1 fir2 31[00405055061][11100600]for k 132 b2 k -1 k-1 b1 kend[H1zw] freqz b11256h1 abs H1z g1 20log10 h1[H2zw] freqz b21256h2 abs H2z g2 20log10 h2figure 1plot wpig1-wpig2--axis [01-10010]gridxlabel \omega\pi ylabel 幅度dBsum h1h1h2h2d 10log10 sumfigure 2plot wpid gridxlabel \omega\pi ylabel 误差dBaxis [01-0303]图72 a 是一个N 32的汉明窗设计结果图中实线表示的低通频响虚线表示它的镜像图72 b 是基于这种设计方法的分析综合滤波器组的整个频响从这个图可见重建误差小于?005dB由于汉明窗设计的频率响应在通带中近乎是平坦的因此最大重建误差发生在这个滤波器的通带边界和过渡带内。
数字信号处理实验MATLAB上机DOC
![数字信号处理实验MATLAB上机DOC](https://img.taocdn.com/s3/m/0e9fc836647d27284b735130.png)
班级: 学号: 姓名: 日期: 实验一:离散时间信号的分析一、实验目的利用DFT 卷积实现系统的时域分析二、实验原理在离散时间、连续频率的傅里叶变换中,由于卷积性质知道,对系统输出的计算可以通过求x[n]和h[n]的DTFT ,将得到的X(e jw )和H(e jw )相乘就可以得到Y(e jw ),进而再通过反变换得到y[n]。
这就避免了在时域进行繁琐的卷积求解。
三、实验步骤(包括代码和波形)1-2(2)x[k]=g[k]=k+1,0<=k<=3;x[k]=g[k]=0,其他 编码如下:ak=1:4 gk=1:4Z=conv(ak,gk) stem(Z)波形如下:12345675101520251-3(1)已知序列x[k]={1,2,3,4;k=0,1,2,3},y[k]={-1,1,2,3;k=0,1,2,3},试计算x[k]的自相关函数以及序列x[k]与y[k]的互相关函数。
编码如下:x=[1,2,3,4];kx=0:3; y=[-1,1,-2,3];ky=0:3; xf=fliplr(x); s1=conv(x,xf); s2=conv(xf,y); yf=fliplr(y); s3=conv(yf,x);k1=kx(1)+ky(1):kx(end)+ky(end); kxf=-fliplr(kx);k2=kxf(1)+ky(1):kxf(end)+ky(end); kyf=-fliplr(ky);k3=kyf(1)+kx(1):kyf(end)+kx(end); subplot(2,2,1); stem(k1,s1);xlabel('k1');ylabel('s1'); subplot(2,2,2); stem(k2,s2);xlabel('k2');ylabel('s2'); subplot(2,2,3) stem(k3,s3);xlabel('k3');ylabel('s3');波形如下:0246102030k1s 1-4-2024-10-50510k2s 2-4-2024-10-50510k3s 3M-1已知g1[t]=cos(6*pi*t),g2=cos(14*pi*t),g3=cos(26*pi*t),以抽样频率f(max)=10HZ对上述三个信号进行抽样。
数字信号处理实验报告MATLAB
![数字信号处理实验报告MATLAB](https://img.taocdn.com/s3/m/49dc749e6c175f0e7cd137e4.png)
数字信号处理实验报告姓名:班级:09电信一班学号:2)]得下图二,图二图一3.将如下文件另存为:sigadd.m文件function [y,n] = sigadd(x1,n1,x2,n2)% 实现y(n) = x1(n)+x2(n)% -----------------------------% [y,n] = sigadd(x1,n1,x2,n2)% y = 在包含n1 和n2 的n点上求序列和,% x1 = 在n1上的第一序列% x2 = 在n2上的第二序列(n2可与n1不等)n = min(min(n1),min(n2)):max(max(n1),max(n2)); % y(n)的长度y1 = zeros(1,length(n)); y2 = y1; % 初始化y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % 具有y的长度的x1y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % 具有y的长度的x2y = y1+y2;在命令窗口输入:x1=[1,0.5,0.3,0.4];n1=-1:2;x2=[0.2,0.3,0.4,0.5,0.8,1];n2=-2:3; [y,n] = sigadd(x1,n1,x2,n2)得:y =n=-1:10;x=sin(0.4*pi*n);y=fliplr(x);n1=-fliplr(n);subplot(2,1,1),stem(n,x) subplot(2,1,2),stem(n1,y在命令窗口键入:n=-1:10; x=sin(0.4*pi*n);n (samples)实验结果:1.(1)在命令窗口输入:tic; [am,pha]=dft1(x)N=length(x);w=exp(-j*2*pi/N);for k=1:Nsum=0;for n=1:Nsum=sum+x(n)*w^((k-1)*(n-1));endam(k)=abs(sum);pha(k)=angle(sum);end;toc得到如下结果:am =Columns 1 through 11120.0000 41.0066 20.9050 14.3996 11.3137 9.6215 8.6591 8.1567 8.0000 8.1567 8.6591Columns 12 through 169.6215 11.3137 14.3996 20.9050 41.0066pha =Columns 1 through 110 1.7671 1.9635 2.1598 2.3562 2.5525 2.7489 2.9452 3.1416 -2.9452 -2.7489Columns 12 through 16-2.5525 -2.3562 -2.1598 -1.9635 -1.7671Elapsed time is 0.047000 seconds.(2)在命令窗口输入:tic;[am,pha]=dft2(x)N=length(x);n=[0:N-1];k=[0:N-1];w=exp(-j*2*pi/N);nk=n’*k;wnk=w.^(nk); Xk=x*wnk; am= abs(Xk); pha=angle(Xk); toc得到下图:figure(1)00.10.20.30.40.50.60.70.80.91signal x(n), 0 <= n <= 99(2)在命令窗口键入:n3=[0:1:99];y3=[x(1:1:10) zeros(1,90)]; %添90个零。
matlab数字信号处理案例
![matlab数字信号处理案例](https://img.taocdn.com/s3/m/96a06bc6846a561252d380eb6294dd88d0d23de6.png)
matlab数字信号处理案例
1.语音信号处理:通过MATLAB分析语音信号的声音频谱,提取语音的基频、形态频谱、共振峰等特征,实现语音的录取、编码、压缩、分割等处理。
2.图像信号处理:利用MATLAB进行图像信号的去噪、增强、分割、识别等处理,如对卫星遥感图像进行分析,提取特定地物的信息,对医学图像进行病灶检测和诊断等。
3.生物信号处理:通过收集并处理电生理信号来分析生物系统的功能和活动,如心电信号的特征提取和诊断,脑电信号的频谱分析和事件相关电位分析,生物信号的模拟和仿真等。
4.控制系统信号处理:MATLAB可用于控制系统信号的建模和仿真,如对机器人和无人车等的运动控制、对“指挥舞台”的音频控制等。
5.通信信号处理:MATLAB可用于模拟通信信号的传输过程,通过配合不同的信号处理算法来处理数字信号,如对调制信号进行解调,对多天线通信系统进行信号检测、捕捉、译码等。
6.物理信号处理:例如遥测信号处理、光学信号处理、雷达信号处理等,将MATLAB与其他物理类型软件相结合,根据特定场景下信号处理的需要,选择相应的处理算法完成信号的分析和识别。
《数字信号处理》实验及代码
![《数字信号处理》实验及代码](https://img.taocdn.com/s3/m/2e0e17dd28ea81c758f57896.png)
实验一 用Matlab 进行数字信号处理一、实验目的1.掌握 MATLAB 基本的操作;2.学习典型的离散信号的Matlab 实现方法。
3.学习离散时间序列的基本运算:相加、相乘、移位等; 二、实验内容1. 练习把y=sin(x), z=cos(x),u=2sin(x),v=sin(x)/cos(x)在[0,2pi]区间内的4个子图分别用不同的颜色、点型和线型绘制在同一个窗口中,并加上纵坐标、标题、图例和网格线。
2. 利用MATLAB 编程产生和绘制下列有限长序列: (1)单位脉冲序列()n δ (2)单位阶跃序列()u n (3)矩形序列8()R n(4)正弦序列()sin()53x n n ππ=+(5)实指数序列0.9()n u n3.上机调试并打印或记录实验结果。
4.完成实验报告。
三、实验结果1. 实验程序如下:x=0:pi/10:2*pi;y=sin(x); plot(x,y,'r*:');grid on %绘制网格线 hold on z=cos(x); plot(x,z,'y+-'); hold on u=2*sin(x); plot(x,u,'bx-'); hold on v=sin(x)/cos(x); plot(x,v,'ko-');hold onxlabel('x 轴'); %x轴注释ylabel('y 轴'); %y轴注释legend({'y=sin(x)','z=cos(x)', 'u=2sin(x) ', 'v=sin(x)/cos(x) '}); %图形注解2. 程序如下:n=-20:20;n0=0;n1=8;w0=pi/5; w1=pi/3;x1=[(n-n0)==0];x2=[(n-n0)>=0];x3=[(n-n0)>=0& (n-n1)<=0];x4=sin(w0*n+w1);x5=0.9.^n.*x2;subplot(511);stem(n,x1);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x2);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x3);axis([ -20 20 0 2]);ylabel('R8(n)'); subplot(514);stem(n,x4);axis([ -20 20 -2 2]);ylabel(' sin(w0n+w1) '); subplot(515);stem(n,x5);axis([ -20 20 0 2]);ylabel('0.9nu(n)'); xlabel('n');实验二离散信号与系统一、实验目的1.掌握卷积定理、熟悉离散信号和系统的时域特性;2.学习Matlab进行卷积计算方法;3.学习Matlab求解差分方程二、实验内容1.离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
数字信号处理(MATLAB版)上机实验操作
![数字信号处理(MATLAB版)上机实验操作](https://img.taocdn.com/s3/m/71f2faf1f61fb7360b4c653f.png)
实验一离散时间信号与系统一、实验目的:1、熟悉常见离散时间信号的产生方法;2、熟悉离散时间系统的单位脉冲响应和单位阶跃响应的求解方法;3、熟悉离散时间信号经过离散时间系统的响应的求解方法。
二、实验内容:已知离散时间系统差分方程为y(n)-0.5y(n-1)+0.06y(n-2)=x(n)+x(n-1),求1、该系统的单位脉冲响应并绘图;2、该系统的单位阶跃响应并绘图;3、已知x(n)=可自己指定用filter函数经过系统的响应并绘图;4、用conv_m函数求系统响应并绘图。
三、实验平台:MA TLAB集成系统四、设计流程:此处写个人自己的设计流程五、程序清单:此处写程序内容六、调试和测试结果:此处写程序的执行结果和实验过程中的调试经过、出现的错误和对应的解决方法七、教师评语与成绩评定此处由老师填写上机操作:实验一离散时间信号与系统实验内容:1.脉冲响应>> b =[1,1]; a = [1,-0.5,0.06];n = [-10:25];>> impz(b,a,n);>> title('Impulse Response'); xlabel('n'); ylabel('h(n)')2.单位阶跃响应>> x = stepseq(0,-10,25); s = filter(b,a,x);Warning: Function call stepseq invokes inexact match d:\MATLAB7\work\STEPSEQ.M.>> stem(n,s)>> title('Step Response'); xlabel('n');ylabel('s(n)')3.>> a=[1,-0.5,0.06];b=[1,1];>> n=-20:120;>> x1=exp(-0.05*n).*sin(0.1*pi*n+pi/3);>> s1=filter(b,a,x1);>> stem(n,s1);;xlabel('n');ylabel('s1(n)');4.>> a=[1,-0.5,0.06];b=[1,1];>> n=-20:120;>> h=impz(b,a,n);>> x1=exp(-0.05*n).*sin(0.1*pi*n+pi/3);>> [y,m]=conv_m(x1,n,h,n);Warning: Function call conv_m invokes inexact match d:\MATLAB7\work\CONV_M.M. >> stem(m,y);title('系统响应');xlabel('m');ylabel('y(m)');实验二离散信号与系统的连续频域分析一、实验目的:1、掌握离散时间信号的DTFT的MATLAB实现;2、掌握离散时间系统的DTFT分析;3、掌握系统函数和频率相应之间的关系。
现代数字信号信号处理matlab编程范例
![现代数字信号信号处理matlab编程范例](https://img.taocdn.com/s3/m/64257727af45b307e8719756.png)
信号处理仿真实验目录一、离散傅立叶变换 (3)1、补零DFT (3)2、高密度频谱和高分辨率频谱 (4)3、用DFT进行谱分析 (6)二、数字滤波器的设计 (11)4、IIR滤波器的设计 (11)5、FIR滤波器的设计 (14)三、短时傅立叶变换分析信号特性 (17)6、短时傅立叶变换分析信号特性 (17)四、功率谱估计与应用 (18)7、采用周期图法估计信号的功率谱 (18)8、采用平均周期图法估计信号的功率谱 (20)9、采用分段平均周期图法估计信号的功率谱 (21)五、同态信号处理 (23)10、同态信号处理 (24)六、非平稳信号分析与处理 (26)七、Kalman滤波在机动目标跟踪中的应用 (31)八、机载R-D成像................................................................................ 错误!未定义书签。
一、 离散傅立叶变换1、补零DFT5()()x n R n =,求N 0分别取10,20时的X(k)。
解:设N 0=10,则0022214105sin()2()()0,1,...,9sin()10N j kn j kn j kN n n k X k x n eeek k πππππ----======∑∑设N 0=20,则002214205sin()4()()0,1,...,19sin()20N jkn j kn j k N n n k X k x n eeek k πππππ----======∑∑用Matlab 进行仿真,得图1-1。
Matlab 源程序:%X(k)与X(ejw)的关系clear;n=0:4;x=[ones(1,5)]; k=0:999;w=(pi/500)*k;X=x*(exp(-j*pi/500)).^(n'*k);%计算离散时间傅立叶变换X(ejw) Xe=abs(X);subplot(321);stem(n,x);ylabel('x(n)');subplot(322);plot(w/pi,Xe);ylabel('|X(ejw)|'); N=15;x=[ones(1,5),zeros(1,N-5)]; n=0:N-1; k=0:9;X=x*(exp(-j*pi/5)).^(n'*k);%N=10点离散傅立叶变换 magX=abs(X);subplot(323);stem(n,x);ylabel('x(n)');subplot(324);stem(k,magX);axis([0,10,0,5]);ylabel('|X(k)|'); N=20;x=[ones(1,5),zeros(1,N-5)]; n=0:1:N-1; k=0:N-1;X=x*(exp(-j*pi/10)).^(n'*k);;%N=20点离散傅立叶变换 magX=abs(X);subplot(325);stem(n,x);ylabel('x(n)');subplot(326);stem(k,magX);axis([0,20,0,5]);ylabel('|X(k)|');图1-1 ()X k 与()j X e ω的关系结论:(1) 填零是给原始序列的运算,给给原始序列的离散时间傅立叶变换提供间隔较密的样本。
数字信号处理-MATLAB程序
![数字信号处理-MATLAB程序](https://img.taocdn.com/s3/m/b92e19e41ed9ad51f01df29e.png)
例题3.1.1Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);Y=fft(y,256);subplot(2,1,1);plot(y);subplot(2,1,2);plot([-128:127],fftshift(abs(Y)));实验所得的图像如下图所示:实验内容1.实现抑制载波的幅度调制。
已调信号()()cos()c y t x t t ω=,式中()x t 为调制信号;cos()c t ω为载波信号。
此处可取()cos(),80m c x t t ωπωπ== /rad s ,10m ωπ= /rad s 。
(1)分析调制信号()x t 的频谱,绘出其时域波形和频谱。
Matlab 程序如下:Fs=1000;Fc=40;N=1000;wc=80*pi;n=0:N-2;t=n/Fs;x=cos(10*pi*pi*t);y=x.*cos(wc*t);z1=fft(x,256);subplot(2,1,1);plot(t,x);legend('x(t)的时域波形');subplot(2,1,2);plot([-128:127],fftshift(abs(z1)));legend('x(t)的频谱'); 实验所得图形如下:(2)分析已调信号()y t的频谱,绘出其时域波形和频谱。
Matlab程序如下:Fs=1000;Fc=40;N=1000;n=0:N-2;t=n/Fs;x=cos(10*pi*pi*t);y=modulate(x,Fc,Fs,'am');z=fft(y,256);subplot(2,1,1);plot(t,y);legend('y(t)的时域波形');subplot(2,1,2);plot([-128:127],fftshift(abs(z)));legend('y(t)的频域波形')(3)设计低通滤波器并应用filter函数,实现信号同步解调设计的低通滤波器为cheby1型低通滤波器,技术参数为:wp=0.2*pi,ws=0.6*pi,Ap=1Db,As=25dB调制:[N,wc]=cheb1ord(0.2*pi,0.6*pi,1,25,’s’);[num,den]=cheby1(N,1,wc,’s’);[b,a]=bilinear(num,den,0.5);x=cos(10*pi*pi*t);y=x.*cos(80*pi*t);w1=filter(b,a,y);plot(w1);Y=fft(w1);plot(w1);axis([0 500 -1 1]);调制后的波形如下图:解调:[N,wc]=cheb1ord(0.2*pi,0.6*pi,1,25,'s'); [num,den]=cheby1(N,1,wc,'s');[b,a]=bilinear(num,den,0.5);x=cos(10*pi*pi*t);y=x.*cos(80*pi*t);w1=filter(b,a,y);plot(w1);Y=fft(w1);Q=demod(Y,Fc,Fs,'am');plot(t,Q);axis([0.3 0.5 -0.1 0.1]);解调后的波形如下图:2.实现含有载波的幅度调制。
基于Matlab的数字信号处理实验指导_学生版
![基于Matlab的数字信号处理实验指导_学生版](https://img.taocdn.com/s3/m/d2223457804d2b160b4ec016.png)
[说明] 1 标量可以与任何维数组进行逻辑运算。 运算比较在此标量与数组每个元素之间进行, 因 此运算结果与参与运算的数组同维。 2 当逻辑运算中没有标量时, 参与运算的数组必须维数相同。 运算在两数组相同位置上的元 素间进行,因此运算结果必定和参与运算的数组同维。
§1.4 控制流语句
1. for 循环语句 其功能是重复执行一条或一组语句的固定次数。 (也可以是零次) 格式: for expression(表达式) statement (描述) end 循环可以嵌套。 例: for I=1;5 for j = 1:4 a(i,j) = i+j-1; end end 2. while 循环语句 其功能是重复执行一条或一组语句的次数, 重复次数由某个逻辑条件控制, 一般来说其执行 次数是不能预先确知的。 格式: while expression(表达式) statement (描述) end 3. if 和 break 语句 if 条件语句的功能是: 如果满足某个条件则执行一条或一组语句, 否则就不执行其内部语句, 或者执行 else 后面的语句。 if 条件语句的一般格式有两种: 格式一: if condition statement end 格式二: if condition
3
电子信息学院
数字信号处理 MATLAB 实验讲义
m=mean(z) 运行程序结果为: m=50 关于函数文件的几点说明: (1) 文件的第一行说明了该函数的名称、输入参数、输出参数。这一行的有无是区别脚本文 件与函数文件的一个重要标志。 (2) 函数的文件名与函数名是相同的。
§1.2
数值数组的创建
三.关系操作与逻辑操作 关系操作符 指令 < <= > 小于 小于等于 大于 含义 指令 >= == = 等于 不等于 含义 大于等于
如何使用MATLAB进行数字信号处理
![如何使用MATLAB进行数字信号处理](https://img.taocdn.com/s3/m/fa8569eb85254b35eefdc8d376eeaeaad1f31694.png)
如何使用MATLAB进行数字信号处理数字信号处理(Digital Signal Processing,简称DSP)是利用数字技术对连续时间信号进行处理和分析的一种方法。
MATLAB作为一种强大的计算软件,具备丰富的信号处理工具箱,可以方便地进行数字信号处理的相关操作。
本文将介绍如何使用MATLAB进行数字信号处理的基本步骤和常用方法。
一、信号的表示与采样在数字信号处理中,首先需要对连续时间信号进行离散化,即将连续时间信号转换为离散时间信号。
通常采用采样(Sampling)的方式,通过在一段时间内定时获取信号的取样值来进行离散化。
MATLAB提供了信号的表示与采样的函数,如sine、square、sawtooth等,可以生成不同类型的信号。
使用这些函数生成信号,并可以通过设置参数来调整信号的幅度、频率等。
例如,生成正弦信号可以使用sine函数,如:```fs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量f = 10; % 信号频率x = sin(2*pi*f*t); % 生成正弦信号```以上代码生成了频率为10Hz的正弦信号,并将其存储在变量x中。
二、离散信号的分析与处理得到离散信号后,便可以对其进行进一步的分析与处理。
MATLAB提供了众多的函数和工具箱,可以方便地进行信号处理操作。
1. 时域分析通过计算信号的时域特性,我们可以了解信号的幅度、频率、相位等信息。
(1)绘制信号波形可以使用plot函数将离散信号的波形绘制出来。
例如,对于上述生成的正弦信号,可以使用以下代码绘制波形图:```plot(t,x);xlabel('时间');ylabel('幅度');title('正弦信号波形');```(2)计算信号的基本特性通过计算均值、方差、能量、功率等指标,我们可以了解信号的基本特性。
对于上述的正弦信号,可以使用以下代码计算信号的均值和能量:```mean_x = mean(x); % 计算信号的均值energy_x = sum(abs(x).^2)/length(x); % 计算信号的能量```2. 频域分析通过对信号进行傅里叶变换,我们可以将信号在频域上进行分析,了解信号的频率、谱形等信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的互相关函数
。
解 用 MATLAB 计算程序如下: x=[1 3 -1 1 2 3 3 1]; y=[2 1 -1 1 2 0 -1 3]; k=length(x); xk=fft(x,2*k);
yk=fft(y,2*k); rm=real(ifft(conj(xk).*yk)); rm=[rm(k+2:2*k) rm(1:k)]; m=(-k+1):(k-1);
数字信号处理 Matlab 实现实例
第1章 离散时间信号与系统
例 1-1 用 MATLAB 计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。 解 MATLAB 程序如下:
a=[-2 0 1 -1 3]; b=[1 2 0 -1]; c=conv(a,b); M=length(c)-1; n=0:1:M; stem(n,c);
程序中第一个 butter 的边界频率 2π×1000,为脉冲响应不变法原型低通滤波器的边 界频率;第二个 butter 的边界频率 2/T=2/0.00025,为双线性变换法原型低通滤波器的边 界频率.图 3.1 给出了这两种设计方法所得到的频响,虚线为脉冲响应不变法的结果;实线 为双线性变换法的结果。脉冲响应不变法由于混叠效应,使得过渡带和阻带的衰减特性变差, 并且不存在传输零点。同时,也看到双线性变换法,在 z=-1 即ω=π或 f=2000Hz 处有一个 三阶传输零点,这个三阶零点正是模拟滤波器在Ω=∞处的三阶传输零点通过映射形成的。
例 3-2 设计一数字高通滤波器,它的通带为 400~500Hz,通带内容许有 0.5dB 的波 动,阻带内衰减在小于 317Hz 的频带内至少为 19dB,采样频率为 1,000Hz。
wc=2*1000*tan(2*pi*400/(2*1000)); wt=2*1000*tan(2*pi*317/(2*1000)); [N,wn]=cheb1ord(wc,wt,0.5,19,'s'); [B,A]=cheby1(N,0.5,wn,'high','s'); [num,den]=bilinear(B,A,1000); [h,w]=freqz(num,den); f=w/pi*500; plot(f,20*log10(abs(h))); axis([0,500,-80,10]); grid; xlabel('') ylabel('幅度/dB') 图 3.2 给出了 MATLAB 计算的结果,可以看到模拟滤波器在Ω=∞处的三阶零点通过高通变换 后出现在ω=0(z=1)处,这正是高通滤波器所希望得到的。
w1=95/500; w2=105/500; [B,A]=butter(1,[w1, w2],'stop'); [h,w]=freqz(B,A); f=w/pi*500; plot(f,20*log10(abs(h)));
axis([50,150,-30,10]); grid; xlabel('频率/Hz') ylabel('幅度/dB')
y(n)受到噪声的干扰。
第 3 章 无限长单位脉冲响应(IIR)滤波器的设计方法
例 3-1 设采样周期 T=250μs(采样频率 fs =4kHz),用脉冲响应不变法和双线性变换 法设计一个三阶巴特沃兹滤波器,其 3dB 边界频率为 fc =1kHz。
[B,A]=butter(3,2*pi*1000,'s'); [num1,den1]=impinvar(B,A,4000); [h1,w]=freqz(num1,den1); [B,A]=butter(3,2/0.00025,'s'); [num2,den2]=bilinear(B,A,4000); [h2,w]=freqz(num2,den2); f=w/pi*2000; plot(f,abs(h1),'-.',f,abs(h2),'-'); grid; xlabel('频率/Hz ') ylabel('幅值/dB')
k=0:1:N-1; y=filter(a,b,x); stem(k,y) xlabel('n');ylabel('幅度') 图 1.2 给出了该差分方程的前 41 个样点的输出,即该系统的单位脉冲响应。
例 1-3 用 MATLAB 计算例 1-2 差分方程
所对应的系统函数的 DTFT。 解 例 1-2 差分方程所对应的系统函数为:
wn=kaiser(30,4.55); nn=[0:1:29]; alfa=(30-1)/2; hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa)); h=hd.*wn'; [h1,w1]=freqz(h,1); plot(w1/pi,20*log10(abs(h1))); axis([0,1,-80,10]); grid; xlabel('归一化频率/') ylabel('幅度/dB')
xlabel('\omega/\pi');ylabel('弧度')
第2章 离散傅里叶变换及其快速算法
例 2-1
解 此时离散序列
,即 k=8里叶变换 DFT,程序如下: k=8; n1=[0:1:19]; xa1=sin(2*pi*n1/k); subplot(2,2,1) plot(n1,xa1) xlabel('t/T');ylabel('x(n)'); xk1=fft(xa1);xk1=abs(xk1); subplot(2,2,2) stem(n1,xk1) xlabel('k');ylabel('X(k)'); n2=[0:1:15]; xa2=sin(2*pi*n2/k); subplot(2,2,3) plot(n2,xa2) xlabel('t/T');ylabel('x(n)'); xk2=fft(xa2);xk2=abs(xk2); subplot(2,2,4) stem(n2,xk2) xlabel('k');ylabel('X(k)');
xlabel('n'); ylabel('幅度');
图 1.1 给出了卷积结果的图形,求得的结果存放在数组 c 中为:{-2 -4 1 3 1 5 1 -3}。
例 1-2 用 MATLAB 计算差分方程
当输入序列为
时的输出结果
。
解 MATLAB 程序如下: N=41; a=[0.8 -0.44 0.36 0.22]; b=[1 0.7 -0.45 -0.6]; x=[1 zeros(1,N-1)];
计算结果示于图 2.1,(a)和(b)分别是 N=20 时的截取信号和 DFT 结果,由于截取了两 个半周期,频谱出现泄漏;(c) 和(d) 分别是 N=16 时的截取信号和 DFT 结果,由于截取了 两个整周期,得到单一谱线的频谱。上述频谱的误差主要是由于时域中对信号的非整周期截 断产生的频谱泄漏。
stem(m,rm) xlabel('m'); ylabel('幅度'); 其计算结果如图 2.2 所示。
例 2-3 计算两个序列的的互相关函数,其中 x(n)={2 3 5 2 1 –1 0 0 12 3 5 3 0 –1 –2 0 1 2} ; y(n)=x(n-4)+e(n), e(n)为一随机噪声,在 MATLAB 中可以用随机函数 rand 产生 解 用 MATLAB 计算程序如下: x=[2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]; y=[0 0 0 0 2 3 5 2 1 -1 0 0 12 3 5 3 0 -1 -2 0 1 2]; k=length(y); e=rand(1,k)-0.5; y=y+e; xk=fft(x,2*k); yk=fft(y,2*k); rm=real(ifft(conj(xk).*yk)); rm=[rm(k+2:2*k) rm(1:k)]; m=(-k+1):(k-1); stem(m,rm) xlabel('m'); ylabel('幅度'); 计算结果如图 2.3(a),我们看到最大值出现在 m=4 处,正好是 y(n)对于 x(n)的延迟。 2. 3(b)是 x(n)的自相关函数,他和 y(n)的区别除时间位置外,形状也略不同,这是由于
图 3.3 给出了 MATLAB 计算的结果,可以看出数字滤波器将无穷远点的二阶零点映射为 z=±1 的二阶零点,数字带通滤波器的极点数是模拟低通滤波器的极点数的两倍。
例 3-4 一数字滤波器采样频率 fs = 1kHz,要求滤除 100Hz 的干扰,其3dB 的边界频 率为 95Hz 和 105Hz,原型归一化低通滤波器为
例 3-3 设计一巴特沃兹带通滤波器,其3dB 边界频率分别为 f2=110kHz 和 f1=90kHz, 在阻带 f3 = 120kHz 处的最小衰减大于10dB,采样频率 fs=400kHz。
w1=2*400*tan(2*pi*90/(2*400)); w2=2*400*tan(2*pi*110/(2*400)); wr=2*400*tan(2*pi*120/(2*400)); [N,wn]=buttord([w1 w2],[0 wr],3,10,'s'); [B,A]=butter(N,wn,'s'); [num,den]=bilinear(B,A,400); [h,w]=freqz(num,den); f=w/pi*200; plot(f,20*log10(abs(h))); axis([40,160,-30,10]); grid; xlabel('频率/kHz') ylabel('幅度/dB')