数字信号处理信号抽样与插值MATLAB实现——实例

在这里插入图片描述
因为之前MATLAB没有好好学,而且DSP也没有好好学,做起作业来十分困难,为了好好写作业,我又重新研究了DSP和MATLAB,学了一下信号的抽样和插值
先看一看x(n)原本的图像
在这里插入图片描述
代码如下

%定义基本参数
f=1;%原信号频率
fs=16;%抽样信号频率
N=52;%采样点数
n=0:N-1;

%画原序列图像
xn=cos(2*pi*n*(f/fs));
stem(n,xn)
title('原x(n)图像')
xlabel('n')
ylabel('幅度')

题目中说了f/fs=16,也就是说T=16,在图像中也吻合
那么我们要将其进行4倍的抽样,该怎么做

实现代码如下

%定义基本参数
f=1;%原信号频率
fs=16;%抽样信号频率
N=52;%采样点数
n=0:N-1;

xn=cos(2*pi*n*(f/fs));

%画M=4倍抽样的x(n)
M=4;
m=0:N/M-1;%52/4=13 13-1=12 0:12有13个点
xn1=decimate(xn,M);%对序列进行抽样
subplot(3,1,2)
stem(m,xn1)%注意对上m和xn1
title('进行M=4倍抽取后的x(n)图像')
xlabel('n')
ylabel('幅度')

抽样函数

其中decimate()函数的意思就是抽样

decimate(xn,M)%表示对xn进行M倍的抽样,并不能进行插值

在这里插入图片描述
注意看图像的横坐标,之前的T=16,现在的T=4

下面对信号进行插值

%定义基本参数
f=1;%原信号频率
fs=16;%抽样信号频率
N=52;%采样点数
n=0:N-1;

xn=cos(2*pi*n*(f/fs));

%画L=3倍插值的x(n)
L=3;
xn2=interp(xn,L);
p=0:N*L-1;
stem(p,xn2)
title('进行L=3倍插值后的x(n)图像')
xlabel('n')
ylabel('幅度')

插值函数

interp(xn,L);%表示对xn进行L的插值,L必须为正整数

在这里插入图片描述
同样,观察横坐标,既然L=3,那么T就变成了48

在画图时要注意stem()里面的参数,常常会因为抽样点和信号对不上画不出来

完整代码

clear
close all
clc

%定义基本参数
f=1;%原信号频率
fs=16;%抽样信号频率
N=52;%采样点数
n=0:N-1;

%画原序列图像
xn=cos(2*pi*n*(f/fs));
%subplot(3,1,1)
stem(n,xn)
title('原x(n)图像')
xlabel('n')
ylabel('幅度')

%画M=4倍抽样的x(n)
M=4;
m=0:N/M-1;%52/4=13 13-1=12 0:12有13个点
xn1=decimate(xn,M);%对序列进行抽样
subplot(3,1,2)
stem(m,xn1)%注意对上m和xn1
title('进行M=4倍抽取后的x(n)图像')
xlabel('n')
ylabel('幅度')

%画L=3倍插值的x(n)
L=3;
xn2=interp(xn,L);
p=0:N*L-1;
subplot(3,1,3)
stem(p,xn2)
title('进行L=3倍插值后的x(n)图像')
xlabel('n')
ylabel('幅度')

在这里插入图片描述

  • 16
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sol-itude

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值