MATLAB上机 采样定理

采样定理

fft1.m

function result=fft1(w,hanshu,n)
for i=1:length(w)
    m=hanshu.*((exp(-1i*(i-1)*pi/100)).^n);
    a{i}=sum(m);  
end
for i=1:length(w)   
    result(i)=a{i};

end

原始信号

x1=0:pi/10:(8*pi);   
w=linspace(0,8*pi,length(x1)); 
figure  
subplot(211)
plot(x1,sin(x1)+2*cos(x1),'k');  %原时域连续信号y=sin(t)+2cost 
line([0 30],[0 0]);
xlabel('t');ylabel('x(t)');
title('原时域连续信号y=sin(t)+2cost');  
grid  
sin1=sin(x1)+2*cos(x1);   
n=0:(length(x1)-1); 
subplot(212)  
plot(w,abs(fft1(w,sin1,n)));      %其对应频域信号Y=FFT(sin(t))      
xlabel('w');ylabel('x(w)');   
title('其对应频域信号Y=FT(sin(t)+2cos(t))'); 
grid 

采样信号

n1=input('请输入采样点数n:'); 
n=0:n1;  
zb=size(n);  
figure  
%sinf=sin(8*pi*n/zb(2)); 
sinf=sin(8*pi*n/zb(2))+2*cos(8*pi*n/zb(2));
subplot(211);  
stem(n,sinf,'.');   
xlabel('n');ylabel('x(n)');
title('采样后的时域信号y=x(n)'); 
w=0:(pi/100):4*pi;
subplot(212)  
plot(w,abs(fft1(w,sinf,n))); 
xlabel('w');ylabel('x(w)');   
title('采样后的频域信号y=FT(sin(n))'); 

低通滤波器

 wp=0.1;ws=0.7;Rp=2;As=30; 
[N,wc]=buttord(wp,ws,Rp,As);  
[B,A]=butter(N,wc);             
[H,w]=freqz(B,A,512,1000);      %返回在采样频率下频率向量
figure; 
plot(w*1000/(2*pi),abs(H));  
xlabel('Hz');ylabel('频率响应幅度');
title('低通滤波器');
grid;

恢复信号

figure
y=filter(B,A,sinf);
subplot(2,1,1);plot(y,'k')%恢复后的连续信号
xlabel('t');ylabel('x(t)');
title('恢复后的连续信号y=sin(t)+2cost');
grid;
Y=fft(y,512);
w=(0:255)/256*500;
subplot(2,1,2),
plot(w,abs([Y(1:256)]));%绘制频谱图
xlabel('Hz');ylabel('频率响应幅度');
title('频谱图');
grid;

猜你喜欢

转载自blog.csdn.net/wcs_152/article/details/78623227