MATLAB 对信号进行butter带通滤波

发送三个波,波特率2G,中心频率分别是2G 6G和10G,现在做一个带通的滤波器滤出10G的波,4阶带通开始8G,截止10G,采样率64G

[B,A]=butter(4,[8e9/(SampleRate/2) 12e9/(SampleRate/2)]);
SpectrumAnalyzer(RxWfmTemp,'fs',64)
freqz(B,A)
RxWfmTemp=filter(B,A,RxWfmTemp);

 

 

close all;
clear;

%% parameter
RollOff = 0.1;
N_T = 100;
SampleRate = 64e9;
BaudRate = 2e9;
UpRate = SampleRate / BaudRate;
Len = 8192;
TrainLen = 2048;

rand('seed', 15);
TxBit = randi([0 1],1, Len);
TxSym = qammod(TxBit.', 2, 'InputType', 'Bit').'; %BPSK 

%% upsampling & RRC
RRCFilt = rcosdesign(RollOff, N_T, UpRate, 'sqrt');
TxWfm=upfirdn(TxSym,RRCFilt,UpRate,1);

%% Frequency offset emulation
FreOffReal1 = 2*1e9;    % unknown to the receiver Hz
RxWfm1 = TxWfm.*exp(1i*2*pi*FreOffReal1*[1:length(TxWfm)]/BaudRate/UpRate);
FreOffReal2 = 6*1e9;    % unknown to the receiver Hz
RxWfm2 = TxWfm.*exp(1i*2*pi*FreOffReal2*[1:length(TxWfm)]/BaudRate/UpRate);
FreOffReal3 = 10*1e9;    % unknown to the receiver Hz
RxWfm3 = TxWfm.*exp(1i*2*pi*FreOffReal3*[1:length(TxWfm)]/BaudRate/UpRate);

RxWfm_Orin = RxWfm1+RxWfm2+RxWfm3;
signalF = fftshift(fft(RxWfm_Orin));
fs=(-length(RxWfm_Orin)/2+1:length(RxWfm_Orin)/2)*SampleRate/length(RxWfm_Orin);
figure(1)
plot(fs,10*log10(abs(signalF)));
grid on
title('滤波前')

%% filter
RxWfmTemp = RxWfm_Orin;
[B,A]=butter(4,[8e9/(SampleRate/2) 12e9/(SampleRate/2)]);
SpectrumAnalyzer(RxWfmTemp,'fs',64)
freqz(B,A)
RxWfmTemp=filter(B,A,RxWfmTemp);
signalF = fftshift(fft(RxWfmTemp));
fs=(-length(RxWfm_Orin)/2+1:length(RxWfm_Orin)/2)*SampleRate/length(RxWfm_Orin);
figure(2)
plot(fs,10*log10(abs(signalF)));
grid on
title('滤波后')

但是这个解调是错的,之后再改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值