MATLAB信号处理之信号的采样

所谓模拟信号的数字信号处理方法就是将待处理模拟信号经过采样、量化、编码形成数字信号,并利用数字信号处理方法对采样得到的数字信号进行处理。
下面我们来看一下对模拟信号采样的具体代码

f=200;               %信号频率为200Hz
t=(0:0.0001:0.1);    %定义信号的时间范围
x=cos(2*pi*f*t);     %生成信号

fs=800;              %采样频率为800Hz
N=80;                %定义采样点数
dt=1/fs;             %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率
T=(0:N-1)*dt;        %定义采样的每个时间点
x1=cos(2*pi*f*T);    %对信号进行采样


subplot(311);
plot(t,x);
ylim([-1 1])
title('原始信号')
subplot(312)
plot(t,x,T,x1,'rp');
ylim([-1 1]);
title('采样过程')

subplot(313)
plot(T,x1);
ylim([-1 1])
xlabel('时间/s')
title('采样后的信号')


上面我们设定的采样频率和采样点数分别为800和80,他俩比值为10,在这里设定比值为10是为了在绘制采样过程那个图形时,让采样信号的最后一个采样点等于原始信号的最后一个时间点,以便显示的图形更加美观,我们也可以这样写

fs=800;           %采样频率为800Hz
dt=1/fs;          %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率
T=0:dt:0.1;       %定义采样的每个时间点
x1=cos(2*pi*f*T); %对信号进行采样

在这里我们略去了采样点数,直接让采样的最后一个时间点和原始信号的最后一个时间点一样,以便绘图更加美观
其实关于采样频率和采样点数的关系还是有一点门道的,他俩的比值决定了频率的分辨率,等我再深入了解一下再专门写一篇博客介绍一下。

注:上图中所画的第三个图,也就是采样后的信号图,它不是由采样信号恢复到原信号所形成的信号,它只不过是把各个采样点给连接了起来而已,对于上面代码而言,原始信号为200Hz,采样信号为800Hz,800>200*2,由采样定理可知,我们所采取的采样频率可以恢复出原信号的波形,只不过在这里我们并没有写由采样信号恢复原信号的代码。

当然我们也可以用stem()函数来绘制采样图

f=20;                  %信号频率为20Hz
t=(0:0.0001:0.1);      %定义信号的时间范围
x=cos(2*pi*f*t);       %生成信号

fs=400;                %采样频率为400Hz
dt=1/fs;               %采样间隔,采样间隔其实就可以理解为是采样信号的周期,周期=1/频率
T=0:dt:0.1;            %定义采样的每个时间点
x1=cos(2*pi*f*T);      %对信号进行采样

subplot(211)
plot(t,x)
subplot(212)
stem(T,x1)

猜你喜欢

转载自blog.csdn.net/qq_36554582/article/details/81663425