当前位置:首页 > 代码 > 正文

基于matlab各滤波器源代码(matlab中值滤波器代码)[20240426更新]

admin 发布:2024-04-26 11:11 106


本篇文章给大家谈谈基于matlab各滤波器源代码,以及matlab中值滤波器代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

基于MATLAB的巴特沃斯低通滤波器的设计。求代码?

%%生成50hz和100hz叠加的正弦波

Fs=1000;

T=1/Fs;

L=200;

t=(0:L-1)*T;

y1=sin(2*pi*50*t);

y2=sin(2*pi*100*t);

y=y1+y2+randn(size(t));

subplot(5,1,1);

plot(t,y);

%%快速傅里叶变换

N=2^nextpow2(L);

Y=fft(y,N)/L;

f=Fs/2*linspace(0,1,N/2+1);

subplot(5,1,2);

plot(f,2*abs(Y(1:N/2+1)));

%%滤波器的设计 wp通带截止频率 ws阻带截止频率 rp通带最大衰减 as阻带最小衰减

%%滤掉100hz的信号

wp=2*50/Fs;

ws=2*80/Fs;

rp=1;

as=10;

[N,wc]=buttord(wp,ws,rp,as);

[b,a]=butter(N,wc);

[H,w]=freqz(b,a);

z=filter(b,a,y);

subplot(5,1,3);

plot(w,abs(H));

subplot(5,1,4);

plot(t,z);

%%对滤波后得到的正弦波进行快速傅里叶变换

N1=2^nextpow2(L);

Y1=fft(z,N1)/L;

f1=Fs/2*linspace(0,1,N1/2+1);

subplot(5,1,5);

plot(f1,2*abs(Y1(1:N1/2+1)));

带通滤波器matlab代码

% 用切比雪夫最佳一致逼近设计线性相位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');%处理后频谱

MATLAB基于汉宁窗的FIR的低通滤波器的源代码及注释

很常见的设计题目

给你一个例程,只需要改一改参数就行了

clear all;

f=[0 0.19 0.2 0.3 0.31 0.59 0.6 0.8 0.81 1];

% 给定频率轴分点;

m=[0 0 1 1 0 0 1 1 0 0];

% 给定在这些频率分点上理想的幅频响应

N1=30;

N2=90;

% 取两种不同的滤波器长度;

b1=fir2(N1,f,m);

b2=fir2(N2,f,m);

% 得到两个滤波器;

subplot(311);

stem(b1,'.');grid;

subplot(312);

stem(b2,'.');grid;

M=128;

[h1,w]=freqz(b1,1,M,1);

[h2,w]=freqz(b2,1,M,1);

subplot(313);

plot(w,abs(h1),'b-',w,abs(h2),'g-');grid;

其中,f是归依化以后的频率 通过数字滤波器的采样频率算出来,根据通带和阻带算好f和m就行了

看一看help,这个函数应该有窗函数的选择 默认情况下是汉明窗

希望能够帮到你

基于matlab各滤波器源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于matlab中值滤波器代码、基于matlab各滤波器源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://www.ahzz.com.cn/post/628.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载