久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1412|回復: 0
打印 上一主題 下一主題
收起左側

基于MATLAB編寫的濾波器代碼實現

[復制鏈接]
跳轉到指定樓層
樓主
ID:1024008 發表于 2022-5-24 18:24 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
MATLAB仿真程序
窗函數設計法:
Fs=100;
t=(1:100)/Fs;
s1=sin(2*pi*t*5);
s2=sin(2*pi*t*15);
s3=sin(2*pi*t*30);
s=s1+s2+s3;
figure(1);
subplot(2,2,1);
plot(t,s)%畫出信號的時域波形
xlabel('Time(seconds)')
ylabel('Time waveform')
title('原始信號的時域波形')%程序功能:畫出信號的頻譜圖。
S=fft(s,512);%對s進行快速傅立葉變換
w=(0:255)/256*(Fs/2);
subplot(2,2,2);
plot(w,abs(S(1:256)))%畫出信號的幅度圖
xlabel('Frequency(Hz)')
ylabel('幅度')
title('幅度譜')
axis([0 35 0 60]);
subplot(2,2,3);
plot(w,angle(S(1:256)))%畫出信號的相位圖
xlabel('Frequency(Hz)')
ylabel('相位')
title('相位譜')%程序功能:設計低通濾波器并畫出其頻譜圖:
%%%%%%%%%%%%%%低通
fb=10;
fc=13;%設置濾波器截止頻率
fs=100;
wb=2*pi*fb/fs;
ws=2*pi*fc/fs;
wc=0.5*(wb+ws);
tr_width=ws-wb;%過渡帶寬
%%%%%%%%%%%%%%高通
%fb=25;
%fc=22;%設置濾波器截止頻率
%fs=100;
%wb=2*pi*fb/fs;
%ws=2*pi*fc/fs;
%wc=0.5*(wb+ws);
%tr_width=wb-ws;%過渡帶寬
%%%%%%%%%%%%%%%%%%%帶通
%fc1=9;fb1=12;fb2=18;fc2=21;fs=100;
%wb1=2*pi*fb1/fs;ws1=2*pi*fc1/fs;wb2=2*pi*fb2/fs;
%ws2=2*pi*fc2/fs;wc1=0.5*(wb1+ws1);wc2=0.5*(wb2+ws2);
%tr_width=min((wb1-ws1),(ws2-wb2));
M=ceil(1.8*pi/tr_width);
n=[0:1:M-1];
hd=ideal_lp(wc,M);
%w_box=(boxcar(M))'
%w_box=(triang(M))'
%w_box=(hamming(M))'
w_box=(kaiser(M,2.5))'
h=hd.*w_box;
[H,w]=freqz(h,[1],1000,'whole');
H=(H(1:501))';
w=(w(1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(h,[1],w);
figure(2);
subplot(2,2,1);stem(n,hd);%理想脈沖響應
xlabel('n');
ylabel('hd(n)');
title('Ideal Impulse Response');
subplot(2,2,2);stem(n,w_box);%矩形窗
xlabel('n');
ylabel('w(n)');
title('Kaiser Window');
subplot(2,2,3);stem(n,h);%實際脈沖響應
xlabel('n');
ylabel('h(n)');
title('Actual Impulse Response');
subplot(2,2,4);plot(w*fs/(2*pi),db);%幅度響應(dB)
axis([0 40-50 0]);
xlabel('Frequency(Hz)');
ylabel('Decibels');
title('Magnitude Response in dB');
sf=filter(h,[1],s);%sf為濾濾波后的信號
figure(3);
subplot(2,2,1);
plot(t,sf)%畫出濾波后信號的時域波形
xlabel('Time(seconds)')
ylabel('Time waveform')
axis([0 1-1 1]);
title('濾波后信號的時域波形')
SF=fft(sf,512);%對sf進行快速傅里葉變換
w=(0:255)/256*(Fs/2);
subplot(2,2,2);
plot(w,abs(SF(1:256)))%畫出濾波后信號的幅度圖
xlabel('Frequency(Hz)')
ylabel('幅度譜')
title('濾波后信號的幅度譜');
subplot(2,2,3);
plot(w,angle(SF(1:256)))%畫出濾波后信號的相位圖
xlabel('Frequency(Hz)')
ylabel('相位譜')
title('濾波后信號的相位譜')%程序功能:對濾波前后信號進行比較
subplot(2,2,4);
plot(w,abs([S(1:256)'SF(1:256)']))%將濾波前后信號的幅度譜畫在一起
xlabel('Frequency(Hz)')
ylabel('Mag.of Fourier transform')
legend({'before','after'})%對兩個曲線進行區分命名
title('濾波前后信號對比')
頻率采樣設計法:
N=100;Fs=100; %數據總數和采樣頻率
fc1=12;
fc2=18;
n=[0:N-1];t=n/Fs;%時間序列
f1=5;f2=15;f3=30;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);%輸入信號
%設計25階的低通濾波器,歸一化截止頻率為fc*2/Fs
b=fir1(25,0.2);
y1=fftfilt(b,x,256);%對數據進行濾波
n1=1:100;t1=t(n1);%選擇采樣點間隔
x1=x(n1);%與采樣點對應的輸入信號
subplot(2,2,1);plot(t1,x1);%繪制輸入信號
title('輸入信號');
S=fft(x,512);% 對x進行快速傅立葉變換
w=(0:255)/256*(Fs/2);   
subplot(2,2,2);
plot(w,abs(S(1:256)))% 畫出信號的幅度圖
xlabel('Frequency (Hz)')
ylabel('幅度')
title('幅度譜')
n2=n1;t2=t(n2);%輸出信號,扣除了相位延遲N/2
y2=y1(n2);
subplot(2,2,3);plot(t2,y2);%繪制輸出信號
title('輸出信號');
xlabel('時間/s')
SF=fft(y1,512);% 對sf進行快速傅里葉變換   
w=(0:255)/256*(Fs/2);
subplot(2,2,4);
plot(w,abs(SF(1:256)))% 畫出濾波后信號的幅度圖
xlabel('Frequency (Hz)')
ylabel('幅度譜')
title('濾波后信號的幅度譜');
figure(2);
[H,f]=freqz(b,1,512,Fs);
plot(f,20*log10(abs(H)));

DSP實現程序

FIR.c程序:
#include<math.h>
#define FIRNUMBER 25
#define PI 3.1415926
float InputWave();
float FIR();
FloatfHn[FIRNUMBER]={51455693,35039587,0,-43569197,-79886877,-91884544,-66619233,0,100778399,218060512,327780957,405671856,433829342,405671856,327780957,218060512,100778399,0,-66619233,-91884544,-79886877,-43569197,0,35039587,51455693};
float fXn[FIRNUMBER]={0.0};
float fInput,fOutput;
float fSignal1,fSignal2,fSignal3;
float fStepSignal1,fStepSignal2,fStepSignal3;
float f2PI;
int i;
float fIn[256],fOut[256];
int nIn,nOut;
main()
{
nIn=0;nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=0.0;
fStepSignal1=2*PI/20;
fStepSignal2=6*PI/20;
fStepSignal3=12*PI/20;
while(1)
{
        fInput=InputWave();
        fIn[nIn]=fInput;
        nIn++;nIn%=256;
        fOutput=FIR();
        fOut[nOut]=-fOutput;
        nOut++;                                /*break point*/
        if(nOut>=256)
        {
                nOut=0;               
        }
        }
}
float InputWave()
{
        for(i=FIRNUMBER-1;i>0;i--)
                fXn[i]=fXn[i-1];
        fXn[0]=sin(fSignal1)+sin(fSignal2)+sin(fSignal3);
        fSignal1+=fStepSignal1;
        if(fSignal1>=f2PI)        fSignal1-=f2PI;
        fSignal2+=fStepSignal2;
        if(fSignal2>=f2PI)        fSignal2-=f2PI;
        fSignal3+=fStepSignal3;
        if(fSignal3>=f2PI)        fSignal3-=f2PI;
        return(fXn[0]);
}
float FIR()
{
        float fSum;
        fSum=0;
        for(i=0;i<FIRNUMBER;i++)
        {
                fSum+=(fXn[i]*fHn[i]);
        }
        return(fSum);
}

Test.cmd程序:
-heap 100
-stack 400
-sysstack 400
-l rts55x.lib
MEMORY
{
        PAGE 0:PROG(R):origin=0x80000,length=0x10000
        PAGE 0:BOOT(R):origin=0x3FF000,length=0xFC0
        PAGE 0:RESET(R):origin=0x3FFC0,length=0x2
        //PAGE 0:VECTORS(R):origin=0x3FFC2,length=0x3E
        PAGE 1:M0RAM(RW):origin=0x000000,length=0x400
        PAGE 1:M1RAM(RW):origin=0x000400,length=0x400
        PAGE 1:L0L1RAM(RW):origin=0x008000,length=0x2000
        PAGE 1:H0RAM(RW):origin=0x3F8000,length=0x2000
}
SECTIONS
{
        .reset:>RESET,PAGE=0
        .pinit:>PROG,PAGE=0
        .cinit:>PROG,PAGE=0
        .text:>PROG,PAGE=0
        .const:>L0L1RAM,PAGE=1
        .bass:>L0L1RAM,PAGE=1
//
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲品质自拍视频 | 人碰人操| 久久免费国产 | 中文字幕在线免费视频 | 日韩欧美国产精品一区二区三区 | 91大神在线资源观看无广告 | 亚洲一区二区三区在线视频 | 欧美日在线 | 免费日韩网站 | 亚洲欧洲成人av每日更新 | 一级全黄视频 | 精品国产伦一区二区三区观看说明 | 日本久久一区二区三区 | 不卡一区二区三区四区 | 国产成人在线播放 | 99久久99| 另类一区 | 毛片国产| 爱草视频 | 国内精品久久久久 | 性一交一乱一伦视频免费观看 | 久久免费视频2 | 亚洲一区视频在线 | 免费看国产一级特黄aaaa大片 | 狠狠综合久久av一区二区老牛 | 免费av直接看 | 欧美久久精品一级黑人c片 91免费在线视频 | 99re6在线视频 | 99re6在线视频 | 波多野结衣在线观看一区二区三区 | 国产91视频免费 | 2019精品手机国产品在线 | 手机av网| av在线视 | 在线视频一区二区三区 | 国产欧美一区二区三区日本久久久 | 一级片在线视频 | 欧美精品综合在线 | 亚洲午夜视频 | 99热最新| 妹子干综合 |