急!如何用MATLAB构建理想低通滤波器,巴特沃斯低通滤波器,指数低通滤波器和梯形低通滤波器对图像处理

作者&投稿:门寿 (若有异议请与网页底部的电邮联系)
matlab用低通滤波器处理wav文件~

用wavread,audioread,wavwrite,audiowrite之类的命令就可以了。
对于不同滤波器而言,每个频率的信号的强弱程度不同。当使用在音频应用时,它有时被称为高频剪切滤波器, 或高音消除滤波器。
低通滤波器概念有许多不同的形式,其中包括电子线路(如音频设备中使用的hiss 滤波器)、平滑数据的数字算法、音障(acoustic barriers)、图像模糊处理等等,这两个工具都通过剔除短期波动、保留长期发展趋势提供了信号的平滑形式。
低通滤波器在信号处理中的作用等同于其它领域如金融领域中移动平均数(moving average)所起的作用;低通滤波器有很多种,其中,最通用的就是巴特沃斯滤波器和切比雪夫滤波器。

滤波器有很多种设计方式。最简单的,就是用已有的buttord计算出最符合条件的巴特沃思滤波器的阶数n和截止频率,再用butter计算n阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。用freqz函数画出滤波器的幅频、相频图。用filter滤波。
例:
  规定:wp为通带截止频率;ws为阻带截止频率;ap为通带最大衰减(dB);as为阻带最大衰减(dB);wc为3dB截止频率;fn为采样率;
  滤波器设计条件:通带最大衰减ap=1dB,阻带最小衰减as=15dB,通带截止频率为wp=2000Hz,阻带截止频率为ws=5000Hz
  代码:
  fn=16000;
  ap=0.1;
  as=60;
  wp=2000;
  ws=5000; %输入滤波器条件
  wpp=wp/(fn/2);wss=ws/(fn/2); %归一化;
  [nwn]=buttord(wpp,wss,ap,as); %计算阶数截止频率
  [ba]=butter(n,wn); %计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
  freqz(b,a,512,fn);%做出H(z)的幅频、相频图
  t =(1:1000)/16000;
  x=cos(4000*pi*t)+cos(6000*pi*t); %输入信号
  figure(2);
  subplot(2,1,1);
  plot(t,x); %合成信号时域波形
axis([0 0.01 -22])
X=fft(x); %进行傅里叶变换
subplot(2,1,2);
plot(abs(X));
y=filter(b,a,x); %滤波b、a滤波器系数,x滤波前序列
figure(3);
subplot(2,1,1); %
plot(t,y); %分离输出信号的时域波形
axis([0 0.01 -1.51.5]);
subplot(2,1,2);
plot(t,cos(4000*pi*t));%cos(4000*pi*t)理论时域波形
axis([0 0.01 -1.51.5])

1. buttord

(1)[N,wc]=buttord(wp,ws,αp,αs)

用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。
调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0≤wp≤1,0≤ws≤1。1表示数字频率pi。
αp,αs分别为通带最大衰减和组带最小衰减(dB)。
当ws≤wp时,为高通滤波器;
当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。
N,wc作为butter函数的调用参数。
(2)[N,Ωc]=buttord(Ωp,Ωs,αp,αs,‘s’)
用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率Ωc。
Ωp,Ωs,Ωc均为实际模拟角频率。
说明:buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。

2.buttap(N)

[z0,p0,k0]=buttap(N)
用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。

说明:如果要从零、极点模型得到系统函数的分子、分母多项式系数向量ba、aa,可调用
[B,A]=zp2tf(z0,p0,k0)

3.butter
(1)[b,a]=butter(N,wc,‘ftype’)
计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。
系数b、a是按照z-1的升幂排列。
(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)
计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。
调用参数N和Ωc分别为巴特沃斯模拟滤波器的阶数和3dB截止频率(实际角频率),可调用buttord(2)格式计算N和Ωc。
系数B、A按s的正降幂排列。
tfype为滤波器的类型:
◇ftype=high时,高通;Ωc只有1个值。
◇ftype=stop时,带阻阻;此时Ωc=[Ωcl,Ωcu],分别为带阻滤波器的通带3dB下截止频率和上截止频率。
◇ ftype缺省时:
若Ωc只有1个值,则默认为低通;
若Ωc有2个值,则默认为带通;其通带频率区间Ωcl < Ω < Ωcu。

注意:所设计的带通和带阻滤波器系统函数是2N阶。因为带通滤波器相当于N阶低通滤波器与N阶高通滤波器级联。

相关文章:
数学思想及理论
均匀乱数
MDSC很可能,我已经用尽了现有原始数据的所有潜能

比如你要处理的信号叫x(n),是一个N点的序列。

理想低通滤波器最简单,先对x(n)做FFT,得到频域特性X(k),然后把高频部分的数据改为0,最后在用IFFT变换转换到时域,就是理想滤波了,因为高频完全被抹掉了,而低频信息丝毫不变。

其他滤波器就不能这样赖皮的做了,因为理想滤波器必须有无限多个抽头才能达到“高频完全被抹掉了,而低频信息丝毫不变”的效果。实际中是不可能的。其他滤波器就是根据你要的阶数先设计出滤波器的时域冲击响应h(n),再用filter( )函数让信号通过这个滤波器,这样来实现

指数低通
A=imread('23.jpg');
R=rgb2gray(A);
subplot(1,3,1);imshow(R);
xlabel('a)原始图像');
R1=imnoise(R,'salt & pepper',0.05);
subplot(1,3,2);imshow(R1);
xlabel('b)含椒盐噪声图像');
f=double(R1)
k=fft2(f);
g=fftshift(k);
[N1,N2]=size(g);
n=2;
d0=25;
u0=round(N1/2);
v0=round(N2/2);
for i=1:N1;
for j=1:N2
d=sqrt((i-u0)^2+(i-v0)^2);
h=exp(-(d/d0)^2);
y(i,j)=h*g(i,j);
end
end
y=ifftshift(y);
e1=ifft2(y);
e2=uint8(real(e1));
subplot(1,3,3);imshow(e2);
xlabel('c)指数低通滤波器处理');

对这里不很了解,不敢多说

你可以上百度下如何使用,有些网站是有教你怎么使用的

如何在MATLAB中使用向量A、B和C绘制三维散点图?
答:想要在MATLAB中绘制出三维散点图和曲面,首先要准备好你的数据。比如,假设你手头有三个向量:A = [1, 2, 3, 4, 5];B = [5, 6, 2, 7, 3];C = [0.1, 0.56, 0.38, 1.78, 0.57];要绘制三维散点图,可以使用plot3函数。让我们一步步操作:figure;scatter3(A, B, C, '....

怎样用Matlab构建一个四维复数方阵?
答:1、打开MATLAB软件,输入一下指令,清空工作空间和窗口界面;clear,clc。2、代数式复数生成:生成代码如下:a1=7+8*i。3、指数式复数生成:a2=5*exp(6*i)。4、复数矩阵的生成:可以直接采用类似实矩阵的方法,a3=[2+2*i4-4*i5+6*i,3-5*i2-2*i4-8*i]。5、由实矩阵生成复矩阵:先生...

急!如何用MATLAB构建理想低通滤波器,巴特沃斯低通滤波器,指数低通滤 ...
答:调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。系数b、a是按照z-1的升幂排列。(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。调用参数N和Ωc分...

如何用MATLAB绘制信号波形图?
答:生成或导入数据:首先,你需要有信号的数据。这些数据可以是实时采集的,也可以是从文件中导入的。如果你有信号数据文件,可以使用MATLAB的导入向导或使用函数如readtable、readcsv、read傅里叶变换等来加载数据。预处理数据:根据需要,你可能需要对数据进行预处理,例如滤波、去噪、归一化等。创建波形图:...

如何用matlab编程求三角形面积?
答:matlab编写程序求三角形面积如下:已知三角形三边a,b,c,则海伦公式S=(1/4)√[(a+b+c)(a+b-c)(a+c-b)(b+c-a)],在matlab里S=1/4*sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))。

用matlab画折线图
答:一、打开Matlab软件,并在命令窗口输入矩阵A和B以及plot(A,B),如图所示。二、按下enter键,图便出来了。三、 点击File,再点击Save As,这样便可以以导出图了。

如何用matlab绘制二阶电路的响应曲线?
答:其中,A和B是待定系数,需要根据初始条件来确定。假设初始电流为I(0),电压为V(0),则可以得到以下初始条件:x(0) = I(0) / C dx/dt(0) = -V(0) / L 代入特征根σ和λ,可以解得系数A和B。5. Plot响应曲线:将得到的响应表达式代入Matlab或Python,即可绘制RLC二阶电路的零输入响应...

如何使用MATLAB建立GM(1,n)模型,用于波动数据预测?
答:误差偏大,其预测性是不可靠。建议采用BP神经网络来预测,即通过已知5个数据训练,来预测10个数据 。其方法过程:1、导入数据 2、产生训练集和测试集 3、数据归一化处理 4、创建/训练BP神经网络及仿真测试 5、性能评价(相对误差,决定系数,极差)6、绘图 按照上述方法进行编程,可以得到如下结果。

MATALB如何求解含有字母常量的微分方程???急用!!!
答:以下是MATLAB运行结果:=== > dsolve('Dy=a*y+b')ans = -b/a+exp(a*t)*C1 以下是验证运行结果:=== 由于上面计算出y= -b/a+exp(a*t)*C1,这里随便令常数C1=1(任意值都可以)。即y= -b/a+exp(a*t)*1 === > syms a b t; y=-b/a+exp(a*t)*1 y = -b/a+exp(...

急!matlab solve用法
答:在MATLAB中,solve函数主要是用来求解代数方程(多项式方程)的符号解析解。用法示例:solve(eq)solve(eq, var)solve(eq1, eq2, ..., eqn)g = solve(eq1, eq2, ..., eqn, var1, var2, ..., varn)其中,eq代表一个符号表达式或字符串,var代表一个变量名称 详细的解释:g=solve(eq)函数...