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