设计一个matlab带通滤波器代码

采样频率10Hz,滤除除0.9-1.1Hz之外的其他信号,信号输入为x1,输出为x2,谢谢,不明白的问我可以追加条件,运行好使的追加分

% 用切比雪夫最佳一致逼近设计线性相位FIR带通滤波器
%信号为0.5hz, 0.9hz, 1.1hz和1.5hz的正统信号叠加组成
%通带为[0.9,1.1]
%频谱分辨率与信号实际长度N成正比
clear all;
f1=0.5;f2=0.9;f3=1.1;f4=1.5;t=0:1203;N=length(t);fs=10;M=512;
x1=sin(2*pi*(f1/fs)*t)+sin(2*pi*(f2/fs)*t)+sin(2*pi*(f3/fs)*t)+sin(2*pi*(f4/fs)*t);
figure(1);
subplot(211);plot(t,x1);title('原信号');
y=fft(x1);
f=(0:1/N:1/2-1/N)*fs;
subplot(212);plot(f,abs(y(1:N/2)));grid;xlabel('hz');%处理前频谱
wc1=2*f2/fs;wc2=2*f3/fs;wc3=2*f4/fs;%归一化角频率,用于下面的f1
f1=[0 wc1-0.05 wc1 wc2 wc2+0.05 1];
A=[0 0 1 1 0 0];%设置带通或带阻,1为带通,0为带阻
weigh=[1 1 1 ];%设置通带和阻带的权重
b=remez(60,f1,A,weigh);%传函分子
h1=freqz(b,1,M);%幅频特性
figure(2)
f=(0:1/M:1-1/M)*fs/2;
subplot(211);plot(f,abs(h1));grid;title('带通');
x2=filter(b,1,x1);
S1=fft(x2);
f=(0:1/N:1/2-1/N)*fs;
subplot(212);plot(f,abs(S1(1:N/2)));grid;xlabel('hz');%处理后频谱追问

不是,输入信号是已知的,不用模拟

追答

那就把x1换成你所已知的输入信号。用模拟信号,是为了验证滤波器的正确性。

追问

f1=0.5;f2=0.9;f3=1.1;f4=1.5;t=0:1203;N=length(t);fs=10;M=512;,f1,f4分别是什么啊?

能QQ问吗,谢谢

追答

f1,f4分别是是除0.9-1.1Hz之外的其他信号,根据所得结果可知,f1,f4已经被滤除。如果你的x1已知,前面一段程序可写为:
clear all;
M=512;
x1=你的信号
N=length(x1);
t=(0:N-1)/fs
figure(1);
subplot(211);plot(t,x1);title('原信号');
y=fft(x1);
f=(0:1/N:1/2-1/N)*fs;
subplot(212);plot(f,abs(y(1:N/2)));grid;xlabel('hz');%处理前频谱
qq:56372540

温馨提示:内容为网友见解,仅供参考
无其他回答

设计一个matlab带通滤波器代码
subplot(212);plot(f,abs(y(1:N\/2)));grid;xlabel('hz');%处理前频谱 wc1=2*f2\/fs;wc2=2*f3\/fs;wc3=2*f4\/fs;%归一化角频率,用于下面的f1 f1=[0 wc1-0.05 wc1 wc2 wc2+0.05 1];A=[0 0 1 1 0 0];%设置带通或带阻,1为带通,0为带阻 weigh=[1 1 1 ];%设...

matlab 数字带通滤波器
通过fir1函数设计了一个Hann窗型滤波器,并使用freqz函数计算其频率响应。滤波器设计完成后,作者对原始信号进行卷积操作,得到滤波后的信号。最后,通过FFT和fftshift函数计算滤波后信号的频谱,展示了滤波前后信号在时域和频域的变化。通过这些步骤,文章提供了一个直观的MATLAB数字带通滤波器实现过程。

matlab中如何实现对带通滤波?
打开matlab的滤波器设计工具包 设定滤波器类型为你说的低通滤波器,FIR类型,设定f pass=300Hz,f stop=350Hz。阻带衰减60dB 自动完成滤波器设计 得到一个40阶的滤波器,权系数为 const real64_T B[40] = { -0.009989618909284, -0.02029074095165,-0.003658761822981, 0.01191660252522,-0.0062...

求设计MATLAB一款处理一维离散信号的带通滤波器完整代码,上限频率2HZ...
f1=300;f3=500;%通带截止频率上下限 fsl=200;fsh=600;%阻带截止频率上下限 rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值 Fs=2000;%采样率 wp1=2*pi*f1\/Fs;wp3=2*pi*f3\/Fs;wsl=2*pi*fsl\/Fs;wsh=2*pi*fsh\/Fs;wp=[wp1 wp3];ws=[wsl wsh];设计切比雪夫滤波器;[n,wn]...

用MATLAB设计低通,带通,高通和带阻FIR数字滤波器 急!!!
(1)低通滤波器的技术指标:H(ejw)=1,0<w<0.3pi;H(ejw)=0,0.3pi<w<pi.(2)带通滤波器的技术指标:H(ejw=0,0<w<0.4pi;H(ejw)=1;0.4pi<w<0.6pi;H(ejw)=0,0.6<w<pi;(3)高通滤波器的技... (1)低通滤波器的技术指标: H(ejw)=1,0<w<0.3pi; H(ejw)=0,0.3pi<w<pi.(2)带通滤波器...

用matlab设计滤波器
这个信号的频率分量分别为30、150和600Hz,因此可分别设计一个低通、带通和高通的滤波器来提取。以FIR滤波器为例,程序如下:clear;fs=2000;t=(1:1000)\/fs;x=10*cos(2*pi*30*t)+cos(2*pi*150*t)+5*cos(2*pi*600*t);L=length(x);N=2^(nextpow2(L));Hw=fft(x,N);figure(1)...

matlab中firl如何使用
wn:滤波器的截止频率,可以是一个标量或者多元素的向量。取值范围0<wn<1,wn = 1对应于奈奎斯特采样频率(采样频率\/2)。wn是单个值时,为低通\/高通滤波器,ftype可以为low\/high;当wn为有两个元素的向量[w1 w2 ],w1 < w2 , 为带通\/带阻滤波器,ftype可以为bandpass\/stop; 如果Wn有两个...

如何利用Simulink的Matlab Fcn实现二阶带通滤波器
带通滤波器的实现过程为了简化实现步骤,我们参考了某位bilibili博主的笔记,从中提炼了三个关键信息:二阶带通滤波器的传递函数表达式、参数之间的关系以及离散化后的差分方程。这些信息使我们在Simulink中直接通过“Transfer Fcn”模块进行实现成为可能。实现时,需要关注离散化方法,如零阶保持器、欧拉法、...

高通、低通、带通、带阻四种滤波器在MATLAB中仿真
'滤波后的波形图';axis([0 M -1 1])Y = fft(yk, N);subplot(414)plot(2*pi*(0:N\/2-1)\/N\/pi, 2*abs(Y(1:N\/2))\/N);title '滤波前的频谱曲线';课程设计(4)带通滤波 clear;clear clf;对连续时间信号进行采样 f1=2;f2=5;f3=8;fs=20;Ts=1\/fs;M=200;k=0:M-1;...

求设计一个hamming窗设计的带通滤波器的matlab程序。
程序:wlp = 0.3*pi; whp = 0.4*pi; wc = [wlp\/pi,whp\/pi];N = 33; n=0:N-1; hn=fir1(N-1,wc, hanning (N)); %基于窗函数的 FIR 滤波器[h2,w]=freqz(hn,1,512); %freqz是用离散傅里叶变换的标准公示计算的 fft使用快速傅里叶变换的公式计算的,本质上没有差别...

相似回答