没有合适的资源?快使用搜索试试~ 我知道了~
dsp的经典教程,基于matlab
资源详情
资源评论
资源推荐
MATLAB 下的数字信号处理实现示例
附录一 信号、系统和系统响应
1、理想采样信号序列
(1)首先产生信号 x(n),0<=n<=50
n=0:50; %定义序列的长度是 50
A=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 是 MATLAB 定义的π,信号乘可采用“.*”
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)改变参数为:
1,0734.2,4.0,1
0
=
=
Ω
== TA
α
n=0:50; %定义序列的长度是 50
A=1; %设置信号有关的参数
a=0.4;
T=1; %采样率
w0=2.0734;
x=A*exp(-a*n*T).*sin(w0*n*T); %pi 是 MATLAB 定义的π,信号乘可采用“.*”
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; %定义序列的长度是 50
x=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:50
x=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、特定冲击串:
)3()2(5.2)1(5.2)()(
−
+
−
+
−
+= nnnnnx
δ
δ
δ
δ
n=1:50; %定义序列的长度是 50
x=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、卷积计算:
∑
+∞
−∞=
−=∗=
m
mnhmxnhnxny )()()()()(
在 MATLAB 中。提供了卷积函数 conv,即 y=conv(x,h),调用十分方便。例如:
系统:
)3()2(5.2)1(5.2)()(
−
+
−
+
−+= nnnnnh
b
δ
δ
δ
δ
信号:
500),sin()(
0
<≤Ω=
−
nnTAetx
nT
a
α
n=1:50; %定义序列的长度是 50
hb=zeros(1,50); %注意:MATLAB 中数组下标从 1 开始
hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1;
close all;
subplot(3,1,1);stem(hb);title(‘系统 hb[n]’);
m=1:50; %定义序列的长度是 50
A=444.128; %设置信号有关的参数
a=50*sqrt(2.0)*pi;
T=0.001; %采样率
w0=50*sqrt(2.0)*pi;
x=A*exp(-a*m*T).*sin(w0*m*T); %pi 是 MATLAB 定义的π,信号乘可采用“.*”
subplot(3,1,2);stem(x);title(‘输入信号 x[n]’);
y=conv(x,hb);
subplot(3,1,3);stem(y);title(‘输出信号 y[n]’);
6、卷积定律验证
k=-25:25;
X=x*(exp(-j*pi/12.5)).^(n’*k);
magX=abs(X); %绘制 x(n)的幅度谱
subplot(3,2,1);stem(magX);title(‘输入信号的幅度谱’);
angX=angle(X); %绘制 x(n)的相位谱
subplot(3,2,2);stem(angX) ; title (‘输入信号的相位谱’)
Hb=hb*(exp(-j*pi/12.5)).^(n’*k);
magHb=abs(Hb); %绘制 hb(n)的幅度谱
subplot(3,2,3);stem(magHb);title(‘系统响应的幅度谱’);
angHb=angle(Hb); %绘制 hb(n)的相位谱
subplot(3,2,4);stem(angHb) ; title (‘系统响应的相位谱’)
n=1:99;
k=1:99;
Y=y*(exp(-j*pi/12.5)).^(n’*k);
magY=abs(Y); %绘制 y(n)的幅度谱
subplot(3,2,5);stem(magY);title(‘输出信号的幅度谱’);
angY=angle(Y); %绘制 y(n)的相位谱
subplot(3,2,6);stem(angY) ; title (‘输出信号的相位谱’)
%以下将验证的结果显示
剩余12页未读,继续阅读
princeyoung
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0