一种传感器的信号分析和滤波器设计

%原始信号
%信号周期:T=10ms;f=100Hz
%干扰信号周期:Tn=0.25ms;fn=4KHz
%
%截止频率Fc=8K
%分辨率:Fd=1Hz
%--------------------------------------
%采样时间:Ts=1/Fd=1s
%采样间隔:delta=1/(2*Fc)=6.25e-5(s)
%采样数:N=2*Fc/Fd=16K
close all;
clear all;
clc;
delta=6.25e-5;
N=16000;
t=0:(delta):(1-(delta));
%原始信号生成
for Ti=0:1:99
    for i=0:1:8
        xIn(Ti*160+i+1)=3;
    end
    for i=9:1:17
        xIn(Ti*160+i+1)=0;
    end
    for i=18:1:79
        xIn(Ti*160+i+1)=1;
    end
    for i=80:1:159
        xIn(Ti*160+i+1)=0;
    end
end
figure;
plot(t(1:160),xIn(1:160),'b');
%原始信号频谱分析
XIn=fft(xIn);
AmpIn = abs(XIn);
AmpIn = AmpIn*2/N;
AmpIn(1)=AmpIn(1)/2;
PhaseIn = angle(XIn);
figure;
subplot(2,1,1);
plot(AmpIn(1:(N/2)));
subplot(2,1,2);
plot(PhaseIn(1:(N/2)));
%----------------------------滤波器设计-----------------------------------
R=3600;
C=2.2e-7;
Tc=R*C;%截止频率
filterInput = tf(1,[Tc,1]);%滤波器传递函数
[SigMid,Tr] = lsim(filterInput,xIn,t);%通过滤波器
%
Rmid=2000;
Cmid=2.2e-7;
filterMid= tf(1,[Rmid*Cmid,1]);
[SigOut,Tr] = lsim(filterMid,SigMid,t);%通过滤波器
figure;
plot(Tr(1:320),SigOut(1:320));
title('滤波器输出');
%输出信号分析
XOut=fft(SigOut);
AmpOut=abs(XOut)*2/N;
AmpOut(1)=AmpOut(1)/2;
PhaseOut = angle(XOut);
figure;
subplot(2,1,1);
plot(AmpOut(1:(N/2)));
subplot(2,1,2);
plot(PhaseOut(1:(N/2)));

你可能感兴趣的:(Matlab)