f0 = 300;
fs = 800;
Ts = 1/fs;
N = 8;
先设定参数,这里先做以800Hz为抽样频率的信号,在原图中存在8个抽样点,所以设置抽样点为8个。
t1 = linspace( 0, (N-1)*Ts, 501 );
ft1 = sin( 2*pi*f0*t1 );
设置原信号。
t2 = (0:N-1)*Ts;
ft2 = sin( 2*pi*f0*t2 );
抽取N个点,用800Hz抽样频率选出抽样点。
400Hz抽样频率同理可以求得。这里说明,400Hz抽样频率时,图中抽样点为4个,但M取了5是为了将图像后面部分完整画出,然后再截取相应的片段,即可把第五个点截去,并且为了看的更清楚,在抽样时给400Hz的抽样点都加上Ts/3,否则会有点与800Hz重合。
figure
plot( t1_1, ft1_1, 'r', t2_2, ft2_2, 'ko',t2, ft2, 'square')
xlabel('t')
legend( ['300Hz连续信号'], ['原信号以400Hz抽样'],['原信号以800Hz抽样'])
title( '频率为f0的信号以fs抽样(fs<2*f0)')
axis([0 0.01 -1 1]);
最后绘图,加上标题和每种数据点、线代表的意义,最后加上书中原图的范围,即可得出结果。
legend()函数是用于设置图例的线条,如图中右上角上的线条和字幕解释等。
plot()函数中,可以用各种方法标明数据点,如
颜色
r Red
g Green
b Blue
c Cyan
m Magenta
y Yellow
k Black
w White
数据点的形状
加号: Plus sign
o :Circle
乘积符号: Asterisk
. : Point
x: Cross
正方形:‘square’
等等
附上完整代码:
%% 以800抽样300Hz的信号
% 参数设置
f0 = 300; % 连续正弦波 频率
fs = 800; % 抽样频率
Ts = 1/fs;
N = 8;%抽样点数N
% 设置原信号
t1 = linspace( 0, (N-1)*Ts, 501 );
ft1 = sin( 2*pi*f0*t1 );
% 用800Hz抽样
t2 = (0:N-1)*Ts;
ft2 = sin( 2*pi*f0*t2 );
%% 以400Hz抽样300Hz的信号
% 参数设置
f0 = 300; % 连续正弦波 频率
fs = 400; % 抽样频率
Ts = 1/fs;
M = 5;% 总抽样点数N
% 设置原信号
t1_1 = linspace( 0, (M-1)*Ts, 201 );
ft1_1 = sin( 2*pi*f0*t1_1 );
% 以400Hz抽样
t2_2 = (0:M-1)*Ts+Ts/3;
ft2_2 = sin( 2*pi*f0*t2_2 );
% 画图
figure
plot( t1_1, ft1_1, 'r', t2_2, ft2_2, 'ko',t2, ft2, 'square')
xlabel('t')
legend( ['300Hz连续信号'], ['原信号以400Hz抽样'],['原信号以800Hz抽样'])
title( '频率为f0的信号以fs抽样(fs<2*f0)')
axis([0 0.01 -1 1]);
最终运行结果:
参考代码:
https://blog.csdn.net/zhoubanlu4/article/details/106151146