by 今天不飞了
课代表跑来问我如题问题,问完人没了……啊,只好把答案写在这里
上代码
- 生成一个信号
也可以用你提前准备好的信号啊
% 原始信号
cf = 20; % 截止频率:后面用于显示频谱的哈,这个值大于信号频率就好
fs = 10;
T = 20;
t = 0:1/fs:T;
Y = sin(2*pi*t)+cos(2*pi*t).^2;
- 采样
% 临界采样
fs1 = 2*fs;
t1 = 0:1/fs1:T;
Y1 = interp1(t,Y,t1);
% 过采样
fs2 = 5*fs;
t2 = 0:1/fs2:T;
Y2 = interp1(t,Y,t2);
% 欠采样
fs3 = fs/5;
t3 = 0:1/fs3:T;
Y3 = interp1(t,Y,t3);
figure
subplot(221),plot(t,Y,'.'),title('原信号')
subplot(222),plot(t1,Y1,'.'),title('临界采样')
subplot(223),plot(t2,Y2,'.'),title('过采样')
subplot(224),plot(t3,Y3,'.'),title('欠采样')
Yfft = abs(fft(Y,cf*2));
Y1fft = abs(fft(Y1,cf*2));
Y2fft = abs(fft(Y2,cf*2));
Y3fft = abs(fft(Y3,cf*2));
figure
subplot(221),plot(Yfft(1:cf)),title('原信号频谱')
subplot(222),plot(Y1fft(1:cf)),title('临界采样频谱')
subplot(223),plot(Y2fft(1:cf)),title('过采样频谱')
subplot(224),plot(Y3fft(1:cf)),title('欠采样频谱')
效果图
- 信号恢复
% 临界采样
Y1r = interp1(t1,Y1,t);
% 过采样
Y2r = interp1(t2,Y2,t);
% 欠采样
Y3r = interp1(t3,Y3,t);
figure
subplot(221),plot(t,Y,'.'),title('原信号')
subplot(222),plot(t,Y1r,'.'),title('临界采样恢复')
subplot(223),plot(t,Y2r,'.'),title('过采样恢复')
subplot(224),plot(t,Y3r,'.'),title('欠采样恢复')
Yfft = abs(fft(Y,cf*2));
Y1sfft = abs(fft(Y1r,cf*2));
Y2sfft = abs(fft(Y2r,cf*2));
Y3sfft = abs(fft(Y3r,cf*2));
figure
subplot(221),plot(Yfft(1:cf)),title('原信号恢复频谱')
subplot(222),plot(Y1sfft(1:cf)),title('临界采样恢复频谱')
subplot(223),plot(Y2sfft(1:cf)),title('过采样恢复频谱')
subplot(224),plot(Y3sfft(1:cf)),title('欠采样恢复频谱')
效果图
其他
有其他问题也可以问我