对信号进行采样和恢复

文件1 main.m clear; clc;

f0=10000; %用来模拟模拟信号的数字信号的采样频率 fs<

%模拟信号的生成

s=signal_generate(f,f0,N);

subplot(4,1,1);plot(s);axis([1 N min(s) max(s)]);

%采样点数,间隔的计算 deltaN=f0/fs Ns=N/deltaN

%采样 for i=1:Ns

sd(i)=s((i-1)*deltaN+1); end

subplot(4,1,2);stem(sd,'.');axis([1 Ns min(s) max(s)]);

%恢复出方波信号 sp=[]; for i=1:Ns

sp=[spsd(i)*ones(1,deltaN)]; end

subplot(4,1,3);plot(sp);axis([1 N min(s) max(s)]);

%低通滤波恢复出原始信号 Wm=fs/f0 level=5/Wm

b=low_filter(Wm,level); delay=level/2;

sp=[sp zeros(1,delay)]; so=filter(b,1,sp);

so=so(delay+1:delay+N)/deltaN;

subplot(4,1,4);plot(so);axis([1 N min(s) max(s)]);

文件2

signal_generate.m

function s=signal_generate(f,f0,N)

f0=10000; num=length(f); s=zeros(1,N); for i=1:num

s=s+sin(f(i)*2*pi*(1:N)/f0); end

文件3

low_filter.m

function b=low_filter(Wm,level); Nm=ceil(Wm/2*level); H=zeros(1,level);

H(1:Nm)=ones(1,Nm); H(Nm+1)=0.5;

H(level-Nm+1)=-0.5;

H(level-Nm+2:level)=-ones(1,Nm-1);

theta=-(level-1)/level*pi*(0:level-1); Hg=H.*exp(j*theta); b=real(ifft(Hg)); b=b/(sum(b.^2)); VVV

%phase

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4