低通滤波的matlab实现

合集下载

z域低通滤波器matlab增益响应

z域低通滤波器matlab增益响应

z域低通滤波器matlab增益响应
在MATLAB中,可以使用函数freqz来计算z域低通滤波器的增益响应。

增益响应指的是频率响应的模值。

下面是一个示例代码,演示如何计算并绘制z域低通滤波器的增益响应。

```matlab
% 滤波器系数
b = [1, 0.5, 0.1]; % 滤波器的分子系数
a = [1]; % 滤波器的分母系数
% 计算增益响应
N = 1000; % 频率响应的点数
[H, w] = freqz(b, a, N); % 使用freqz计算增益响应
% 绘制增益响应 (单位为dB)
figure
plot(w/pi, 20*log10(abs(H)))
xlabel('Normalized Frequency (π rad/sample)')
ylabel('Gain (dB)')
title('Gain Response of z-Domain Lowpass Filter')
grid on
```
在上述代码中,通过设定滤波器的分子系数和分母系数来定义滤波器。

然后,使用`freqz`函数计算增益响应,并返回频率响应`H`和与之对应的频率`w`。

最后,使用`plot`函数将频率响应
绘制出来,其中将X轴归一化为π表示。

注意,上述代码中的增益响应是以dB为单位的,因此使用了`20*log10`将增益转换为dB。

如果想使用线性增益,则可以直接使用`abs(H)`。

执行此代码将输出低通滤波器的增益响应图像。

可以根据滤波器的系数和需要的频率特性进行适当地调整。

用Matlab设计的低通数字滤波器

用Matlab设计的低通数字滤波器

指导教师评定成绩:审定成绩:重庆邮电大学自动化学院综合课程设计报告低通数字滤波器设计单位(二级学院):自动化学生姓名:专业:自动化班级:0810902学号:指导教师:设计时间:2012 年11月重庆邮电大学自动化学院制摘要本次设计以AT89S52单片机为控制器件,利用AD/DA转换芯片构成低通数字滤波器。

首先利用MATLAB根据要求设计低通滤波器模型并在该平台进行初步仿真得到较为理想的效果。

接着利用proteus软件搭建硬件电路,并对编写的程序进行检测;程序检测无误后,再用Protel画出电路图。

首先利用ADC0809将模拟信号转换成数字信号输入单片机,正弦模拟信号由AD9850模块产生,是一般正常的低频正弦波;另一个噪声信号是通过单片机产生的高频脉冲信号。

然后通过滤波程序将采集的数据进行算法滤波,滤波后的数据通过DAC0832输出,将DA0832的输出信号通过一级运放(UA741)转换成电压输出。

最后将运放输出的结果接到示波器上进行显示。

关键字:AT89C51、DDS、ADC0809、DAC0832、UA741设计题目题目与要求低通滤波器是允许低频讯号通过,而不允许高频讯号通过的滤波器。

本题目要求用单片机(型号任选)制作一个低通数字滤波器,要求:1.根据确定的采样频率,用MATLAB设计低通滤波器模型以满足不同截止频率需求,并进行仿真;2.用单片机设计并制作一个低通数字滤波器,实现数据采集、滤波处理、信号输出等功能(包括软、硬件);3.滤波器能与PC机通信,设计通信协议,实现截止频率参数的调节、原始信号采样数据与滤波后数据的上传;4.利用高级语言开发工具,设计PC机端的程序,可以调节滤波器参数,接收滤波器上传的原始信号采样数据与滤波后数据,并能绘图、保存;5.设计几种不同频率、类型的噪声,利用滤波器进行试验,记录实验情况并进行分析、总结;6.按规定的统一格式设计报告。

目录第一章 MATLAB仿真 (4)1.1方案论证 (4)1.2设计方法及原理介绍 (4)1.3 matlab编程实现 (5)1.4 Simulink仿真结构图 (5)第二章硬件设计方案 (6)2.1硬件功能整体设计 (6)2.2单片机最小系统 (7)2.3 ADC0809和74HC74 (7)2.4 DAC0832和UA741 (8)2.5 串口部分 (9)2.6 DDS部分 (9)第三章软件设计 (10)3.1 单片机软件设计 (10)3.2 PC机通信软件设计 (12)第四章心得体会 (13)参考文献 (14)附件1:方波源程序 (15)附件2:DDS正弦信号模块 (15)附件3:主单片机程序 (19)附录4:protues原理图 (21)附录5:protel电路图 (22)附录6:DDS原理图 (22)第一章 MATLAB 仿真1.1方案论证数字滤波器,按功能分类,可以分成低通、高通、带通、带阻、全通滤波器;按实现的网络结构或单位抽样响应分类:可以分成无限脉冲响应滤波器(IIR 滤波器)、有限脉冲响应滤波器(FIR 滤波器)。

计算机视觉(二)-matlab之理想低通滤波器,布特沃斯低通、高斯低通,理想高通、布特沃斯。。。

计算机视觉(二)-matlab之理想低通滤波器,布特沃斯低通、高斯低通,理想高通、布特沃斯。。。

计算机视觉(⼆)-matlab之理想低通滤波器,布特沃斯低通、⾼斯低通,理想⾼通、布特沃斯。

未整理完!在滤波器之前,先讲解傅⾥叶变换理想低通滤波器f = imread('Fig0441.tif');f = im2double(f);% 计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱');% 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 30; % 截⽌频率[10 30 60 160 460]H = mat2gray( D <= D0 );% 理想低通滤波器figure;imshow(H);title('理想低通滤波器');% 频域滤波G = F.*H;figure;imshow(mat2gray(log(1+abs(G))));title('频域滤波'); 1-sum(sum(abs(G).^2))/sum(sum(abs(F).^2))g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);figure;imshow(g);title('滤波后的图像');figure;subplot(121);imshow(f);title('原图');subplot(122);imshow(g);title('滤波后的图像');结果:原图:布特沃斯低通滤波器f = imread('Fig0441.tif');f = im2double(f);% 计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱'); % 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 30; % 截⽌频率[10 30 60 160 460]H = mat2gray(1./(1+((D./D0).^4)));figure;imshow(H);title('布特沃斯低通滤波器(n=2)');% 频域滤波G = F.*H;figure;imshow(mat2gray(log(1+abs(G))));title('频域滤波'); 1-sum(sum(abs(G).^2))/sum(sum(abs(F).^2))g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);figure;imshow(g);title('滤波后的图像');figure;subplot(121);imshow(f);title('原图');subplot(122);imshow(g);title('滤波后的图像'); matlab结果:⾼斯低通滤波器⾼斯低通滤波器代码:H = exp((-D.^2)/(2*(D0).^2));figure;imshow(H);title('滤波器(D0=100)');结果:理想⾼通滤波器理想⾼通滤波器代码:H = mat2gray( D >= D0 );%理想⾼通滤波器figure;imshow(H);title('滤波器()');结果:布特沃斯⾼通滤波器布特沃斯⾼通滤波器代码:H = 1./(1+((D0./D).^4));%布特沃斯⾼通滤波器figure;imshow(H);title('滤波器(n=2)');结果:⾼斯⾼通滤波器⾼斯⾼通滤波器代码:H = 1-exp((-D.^2)/(2*(D0).^2));%⾼斯⾼通滤波器figure;imshow(H);title('滤波器');matlab结果:混合⾼频强调滤波[file,path] = uigetfile({'*.png';'*.jpg';},'选择图⽚');f = imread([path,file]);f = im2double(f);%计算填充图像⼤⼩[M,N] = size(f);M2 = 2*M;N2 = 2*N;% 傅⾥叶变换F = fftshift(fft2(f,M2,N2));figure;imshow(mat2gray(log(1+abs(F))));title('傅⾥叶频谱'); % 设计滤波器% ⽣成⽹格坐标u = -N:N-1;v = -M:M-1;[U,V] = meshgrid(u,v);% 设计滤波器D = hypot(U,V);D0 = 40; %截⾄频率[10 30 60 160 460]H = 1-exp((-D.^2)/(2*(D0).^2));%¸⾼斯⾼通滤波G = (F.^(-1)).*((0.5+0.75.*H).*F);%figure;imshow(H);title('滤波器');figure;imshow(mat2gray(log(1+abs(G))));title('频率滤波'); % 傅⾥叶逆变换g0 = ifft2(fftshift(G));g = g0(1:M,1:N);g = real(g);i=histeq(g);figure;imshow(g);title('滤波后的图像');figure;imshow(i);title('直⽅图均衡');结果:原图:reference:李卫军,肖宛昂,董肖莉,覃鸿⽼师《视觉信息处理及FPGA 实现》课程等越是憧憬,越要风⾬兼程。

matlab巴特沃斯低通滤波函数

matlab巴特沃斯低通滤波函数

matlab巴特沃斯低通滤波函数
MATLAB中的巴特沃斯低通滤波函数用于设计和应用巴特沃斯低通滤波器。

巴特沃斯滤波器是一种常见的数字滤波器类型,可以对信号进行频率域的滤波处理。

巴特沃斯低通滤波器的特点是在通带内具有最平坦的幅度响应,并且有一个明确的截止频率。

它可以将高于截止频率的信号分量抑制或删除,而保留低于截止频率的信号分量。

巴特沃斯低通滤波器的作用是滤除高于截止频率的噪声或不需要的信号分量,以提取出所需的信号内容。

它常用于信号处理、图像处理、音频处理等领域,如用于去除图像中的高频噪声,平滑时间序列数据等。

在MATLAB中,设计巴特沃斯低通滤波器的函数是butter。

该函数可以根据指定的阶数、截止频率和滤波器类型来设计滤波器,并返回巴特沃斯低通滤波器的系数。

你可以使用这些系数来应用滤波器到信号上,使用filter函数实现滤波操作。

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍引言滤波器是数字信号处理中常用的工具,它可以去除噪声、改善信号质量以及实现其他信号处理功能。

在Matlab中,有许多不同的滤波器设计方法可供选择。

本文将介绍一些常见的滤波器设计方法,并详细说明它们的原理和应用场景。

一、FIR滤波器设计1.1 理想低通滤波器设计理想低通滤波器是一种理论上的滤波器,它可以完全去除截止频率之上的频率分量。

在Matlab中,可以使用函数fir1来设计理想低通滤波器。

该函数需要指定滤波器阶数及截止频率,并返回滤波器的系数。

但是,由于理想低通滤波器是非因果、无限长的,因此在实际应用中很少使用。

1.2 窗函数法设计为了解决理想滤波器的限制,窗函数法设计了一种有限长、因果的线性相位FIR滤波器。

该方法利用窗函数对理想滤波器的频率响应进行加权,从而得到实际可用的滤波器。

在Matlab中,可以使用函数fir1来实现窗函数法设计。

1.3 Parks-McClellan算法设计Parks-McClellan算法是一种优化设计方法,它可以根据指定的频率响应要求,自动选择最优的滤波器系数。

在Matlab中,可以使用函数firpm来实现Parks-McClellan算法。

二、IIR滤波器设计2.1 Butterworth滤波器设计Butterworth滤波器是一种常用的IIR滤波器,它具有平坦的幅频响应,并且在通带和阻带之间有宽的过渡带。

在Matlab中,可以使用函数butter来设计Butterworth滤波器。

2.2 Chebyshev滤波器设计Chebyshev滤波器是一种具有较陡的滚降率的IIR滤波器,它在通带和阻带之间有一个相对较小的过渡带。

在Matlab中,可以使用函数cheby1和cheby2来设计Chebyshev滤波器。

2.3 Elliptic滤波器设计Elliptic滤波器是一种在通带和阻带上均具有较陡的滚降率的IIR滤波器,它相较于Chebyshev滤波器在通带和阻带上都具有更好的过渡特性。

基于matlab对图像进行高通、低通、带通滤波

基于matlab对图像进行高通、低通、带通滤波

数字图像处理三级项目—高通、低通、带通滤波器摘要在图像处理的过程中,消除图像的噪声干扰是一个非常重要的问题。

利用matlab软件,采用频域滤波的方式,对图像进行低通和高通滤波处理。

低通滤波是要保留图像中的低频分量而除去高频分量,由于图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓;高通滤波是要保留图像中的高频分量而除去低频分量,所以高通滤波可以保留较多的边缘轮廓信息。

低通滤波器有巴特沃斯滤波器和高斯滤波器等等,本次设计使用的低通滤波器为****。

高通滤波器有巴特沃斯滤波器、高斯滤波器、Laplacian高通滤波器以及Unmask高通滤波器等等,本次设计使用巴特沃斯高通滤波器。

1、频域低通滤波器:设计低通滤波器包括 butterworth and Gaussian (选择合适的半径,计算功率谱比),平滑测试图像test1和2。

实验原理分析根据卷积定理,两个空间函数的卷积可以通过计算两个傅立叶变换函数的乘积的逆变换得到,如果f(x, y)和h(x, y)分别代表图像与空间滤波器,F(u, v)和H(u, v)分别为响应的傅立叶变换(H(u, v)又称为传递函数),那么我们可以利用卷积定理来进行频域滤波。

在频域空间,图像的信息表现为不同频率分量的组合。

如果能让某个范围内的分量或某些频率的分量受到抑制,而让其他分量不受影响,就可以改变输出图的频率分布,达到不同的增强目的。

频域空间的增强方法的步骤:(1)将图像从图像空间转换到频域空间;(2)在频域空间对图像进行增强;(3)将增强后的图像再从频域空间转换到图像空间。

低通滤波是要保留图像中的低频分量而除去高频分量。

图像中的边缘和噪声都对应图像傅里叶频谱中的高频部分,所以低通滤波可以除去或消弱噪声的影响并模糊边缘轮廓。

理想低通滤波器具有传递函数:其中D0为制定的非负数,D(u,v)为点(u,v)到滤波器中心的距离。

低通滤波 matlab

低通滤波 matlab

低通滤波matlab
低通滤波是指只允许低于某一频率范围的信号通过的滤波器,而阻止高于该频率范围的信号通过。

在MATLAB中,可以使用以下函数来实现低通滤波:
1. butter()函数:用于设计巴特沃斯滤波器,可设置滤波器的阶数、截止频率等参数。

2. fir1()函数:用于设计FIR(有限脉冲响应)滤波器,可设置滤波器的截止频率、窗函数等参数。

3. filter()函数:用于应用滤波器,输入原始信号和滤波器的系数,输出滤波后的信号。

例如,以下代码可以实现对信号x进行低通滤波,保留频率在0-1000Hz范围内的信号:
matlab
fs = 10000; %采样频率
fc = 1000; %截止频率
Wn = fc/(fs/2); %归一化截止频率
[b,a] = butter(6,Wn,'low'); %设计6阶巴特沃斯滤波器
y = filter(b,a,x); %应用滤波器
其中,b和a分别代表巴特沃斯滤波器的Numerator和Denominator系数,6表示滤波器的阶数,x是原始信号,y是滤波后的信号。

需要注意的是,滤波器的阶数越高,滤波效果通常越好,但也会增加计算量和延迟时间。

matlab滤波函数详解 -回复

matlab滤波函数详解 -回复

matlab滤波函数详解-回复Matlab滤波函数详解滤波是信号处理中的重要任务之一,它可以用来去除噪声、强调信号的特定频率成分、或者改变信号的频谱分布。

Matlab作为一款强大的数学计算软件,提供了丰富的滤波函数以供使用。

本文将主要介绍Matlab中常用的滤波函数,并逐步回答关于这些函数的一系列问题。

一、fir1函数fir1函数用于设计FIR滤波器的零点增益。

它采用了窗函数法,通过选择合适的窗函数和截止频率,可以得到所需的滤波器。

1. 如何使用fir1函数设计一个低通滤波器?使用fir1函数设计一个低通滤波器的示例代码如下:matlabfs = 1000; 采样频率fc = 100; 截止频率N = 100; 滤波器的阶数b = fir1(N, fc/(fs/2));以上代码中,fs表示采样频率,fc表示截止频率,N表示滤波器的阶数。

fir1函数会返回滤波器的系数b。

2. fir1函数有哪些可选参数?如何选择窗函数?fir1函数还可以接受其他参数,用于指定窗函数的类型和参数。

常用的窗函数有'hamming'、'hanning'、'blackman'等。

可以使用help fir1查看fir1函数的帮助文档,其中有关于可选参数的详细说明。

二、butter函数butter函数用于设计IIR(无限脉冲响应)滤波器。

它基于巴特沃斯滤波器的设计方法,可以用来设计各种类型的滤波器。

1. 如何使用butter函数设计一个带通滤波器?使用butter函数设计一个带通滤波器的示例代码如下:matlabfs = 1000; 采样频率f1 = 100; 通带1的下限频率f2 = 200; 通带2的上限频率Wn = [f1, f2]/(fs/2);[N, Wn] = buttord(Wn(1), Wn(2), 1, 40);[b, a] = butter(N, Wn);以上代码中,fs表示采样频率,f1和f2分别表示通带的下限和上限频率,Wn表示归一化的通带频率范围,N表示滤波器的阶数,b和a分别表示滤波器的分子和分母系数。

matlab冲激响应不变法设计iir低通滤波器

matlab冲激响应不变法设计iir低通滤波器

一、引言Matlab是一款功能强大的工程仿真软件,多用于信号处理,通信系统,控制系统等方面的研究和应用。

在Matlab中,设计IIR(Infinite Impulse Response)滤波器是很常见的任务,其中冲激响应不变法是一种常用的设计方法,特别是针对所需的低通滤波器。

本文将介绍在Matlab中如何利用冲激响应不变法设计IIR低通滤波器。

二、IIR滤波器简介IIR滤波器是指其冲激响应具有无限长度的滤波器。

与FIR(Finite Impulse Response)滤波器相比,IIR滤波器具有更窄的过渡带和更陡峭的截止带,同时能够用更少的参数来达到相似的性能。

在数字信号处理中,IIR滤波器常常用于对信号进行滤波和增强。

三、冲激响应不变法的基本原理冲激响应不变法是一种通用的IIR滤波器设计方法,其基本原理是将所需的模拟滤波器(一般为巴特沃斯或切比雪夫滤波器)的冲激响应与仿真采样进行一一映射,从而得到对应的数字IIR滤波器的参数。

这样设计得到的数字IIR滤波器的频率响应与模拟滤波器的频率响应基本一致。

四、Matlab中的冲激响应不变法设计IIR滤波器在Matlab中,利用signal processing toolbox中的iirdesign函数可以很方便地实现冲激响应不变法设计IIR滤波器。

下面是一个使用iirdesign函数设计低通滤波器并绘制其频率响应的示例代码:```matlabFs = 1000; 采样频率Fpass = 100; 通带截止频率Fstop = 150; 阻带截止频率Apass = 1; 通带最大衰减Astop = 60; 阻带最小衰减designmethod = 'butter'; 巴特沃斯滤波器[b, a] = iirdesign(Fpass/(Fs/2), Fstop/(Fs/2), Apass, Astop, designmethod);freqz(b, a, 1024, Fs); 绘制滤波器频率响应```上述代码中,首先定义了采样频率Fs,通带和阻带的截止频率Fpass 和Fstop,以及通带最大衰减Apass和阻带最小衰减Astop。

基于Matlab的FIR滤波器设计与实现

基于Matlab的FIR滤波器设计与实现

二、实验平台Matlab7.1三、实验原理以低通滤波器为例,其常用的设计指标有:1.通带边缘频率f p(数字频率为Ωp)2.阻带边缘频率f st (数字频率为Ωst)3.通带内最大纹波衰减δp=-20log10(1-αp),单位为dB4.阻带最小衰减αs=-20log10(αs),单位为dB5.阻带起伏αs6.通带峰值起伏αp其中,以1、2、3、4条最为常用。

5、6条在程序中估算滤波器阶数等参数时会用到。

数字频率= 模拟频率/采样频率四、实例分析例1 用凯塞窗设计一FIR低通滤波器,通带边界频率Ωp=0.3pi,阻带边界频率Ωs=0.5pi,阻带衰减δs不小于50dB。

方法一:手动计算滤波器阶数N和β值,之后在通过程序设计出滤波器。

第一步:通过过渡带宽度和阻带衰减,计算滤波器的阶数B和β值。

第二步:通过程序设计滤波器。

程序如下:b = fir1(29,0.4,kaiser(30,4.55));[h1,w1]=freqz(b,1);figure (1)plot(w1/pi,abs(h1)); grid;xlabel('归一化频率/p') ; ylabel('幅度/dB') ;figure (2)plot(w1/pi,angle(h1)); grid;xlabel('归一化频率/p') ; ylabel('相位') ;波形如下:例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率fc=800Hz,阻带边界fr=1000Hz,通带波动阻带最小衰减At=40dB,采样频率fs=4000Hz。

一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W (ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。

函数remezord中的数组fedge为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev是通带和阻带的波动,fs是采样频率单位为Hz。

matlab 低通滤波命令

matlab 低通滤波命令

matlab 低通滤波命令MATLAB是一种非常强大的数学软件,它可以用于各种各样的计算和数据处理。

其中的低通滤波命令可以帮助用户对信号进行滤波处理,有效地去除高频噪声,提高信号的质量。

下面我们将详细介绍MATLAB的低通滤波命令及其使用方法。

一、MATLAB的低通滤波命令在MATLAB中,实现低通滤波的命令主要有两种,一种是直接使用函数进行滤波,另一种是使用滤波器对象对信号进行处理。

1. 直接使用函数进行滤波MATLAB中实现低通滤波最简单的方法就是使用“lowpass”函数进行滤波处理。

具体代码如下:y = lowpass(x,Wn,'Steepness',S)其中,x表示待滤波的信号,y为滤波后的结果,Wn为滤波器的截止频率,S为滤波器的衰减程度。

2. 使用滤波器对象进行处理另一种MATLAB中实现低通滤波的方法就是使用滤波器对象,具体代码如下:d=fdesign.lowpass('Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast,Fs);obj=design(d,'butter')y=filter(obj,x)其中,Fp为通带截止频率,Fst为阻带截止频率,Ap为通带最大衰减,Ast为阻带最小衰减,Fs为采样频率。

二、低通滤波的使用方法使用MATLAB进行低通滤波的方法非常简单,下面我们将给出一份具体的使用方法:1. 准备数据首先需要准备好待滤波的信号数据。

可以从测量仪器、传感器或其他设备中读取到,也可以使用MATLAB自带的数据集进行处理。

将数据存储在一个变量中。

2. 设计滤波器在进行滤波之前需要先设计滤波器。

可以使用fdesign函数创建一个滤波器设计器,然后使用design函数根据所需的滤波器类型(如低通、高通、带通等)和参数(截止频率、通带衰减、阻带衰减等)生成一个滤波器对象。

3. 滤波处理使用filter函数对数据进行滤波处理。

基于MATLAB的filter的使用,低通、带通和高通滤波器设计

基于MATLAB的filter的使用,低通、带通和高通滤波器设计

基于MATLAB的filter的使⽤,低通、带通和⾼通滤波器设计1、⽬的学习MATLAB的filter函数的使⽤,通过设计低通、带通和⾼通滤波器对其进⾏仿真2、⽤到的主要函数和⼯具MATLAB、FDATOOL、filter、fft3、设计1. 信号的产⽣%% Parameter InterfaceFrequence0 = 60; %单位:HzFrequence1 = 130; %单位:HzFrequence2 = 1e3; %单位:HzSampleFre = 4e3; %单位:HzSampleLen = SampleFre; %采样点数%% Main%-------------------产⽣三路信号t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);SignalData0 = sin(2*pi*Frequence0*t);SignalData1 = sin(2*pi*Frequence1*t);SignalData2 = sin(2*pi*Frequence2*t);SignalData3 = SignalData0+SignalData1+SignalData2;figure;hold onplot(t(1:150),SignalData0(1:150),'b')plot(t(1:150),SignalData1(1:150),'r')plot(t(1:150),SignalData2(1:150),'k')hold offfigure;plot(t(1:150),SignalData3(1:150))title('三路信号求和')三路信号的时域波形三路求和信号频谱分析FFT_Data = fft(SignalData3);2.低通滤波器设计基于fdatool的低通滤波器的设计在MATLAB命令⾏执⾏fdatool命令,弹出滤波器设计交互窗⼝,根据⾃⼰的需求设计符合⾃⼰要求的滤波器,这是我设计的低通滤波器见下图需要注意的是通过设计Fpass和Fstop确定了滤波器的带宽,同时参数设计的越接近理论滤波器的性能,滤波器的阶数越多,计算量越⼤,所以需要优化滤波器这两个参数,在保证性能的同时确保阶数越⼩(计算量越⼩)滤波LPF_Data = filter(LPF_Coe.LPF_60M,1,SignalData3);滤波后的时域和频谱波形3.带通和⾼通操作步骤⼤体⼀致就不详细说明4、M代码5、备注1、滤波器出数有⼀定延迟,这在具体调制解调过程中需要注意。

低通滤波的matlab实现

低通滤波的matlab实现

四种低通滤波器:一、理想低通滤波器I=imread('bb.jpg');T=rgb2gray(I);figure(1);subplot(1,2,1),imshow(uint8(I));title('原图像');subplot(1,2,2),imshow(uint8(T));title('理想低通滤波所得图像');[f1,f2]=freqspace(size(T),'meshgrid');H=ones(size(T));r=sqrt(f1.^2+f2.^2);H(r>0.1)=0;Y=fft2(double(T));Y=fftshift(Y);Ya=Y.*H;Ya=ifftshift(Ya);I=ifft2(Ya);figure(2);surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');二、巴特沃斯低通滤波器I=imread('bb.jpg');T=rgb2gray(I);figure(1);subplot(1,2,1),imshow(uint8(I));title('原图像');subplot(1,2,2),imshow(uint8(T));title('巴特沃斯低通滤波所得图像');[f1,f2]=freqspace(size(T),'meshgrid');D=0.3;r=f1.^2+f2.^2;n=4;for i=1:size(T,1)for j=1:size(T,2)t=r(i,j)/(D*D);H(i,j)=1/(t^n+1);endendY=fft2(double(T));Y=fftshift(Y);Ya=Y.*H;Ya=ifftshift(Ya);I=real(ifft2(Ya));figure(2);surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');三、梯形滤波器I=imread('bb.jpg');T=rgb2gray(I);figure(1);subplot(1,2,1),imshow(uint8(I));title('原图像');subplot(1,2,2),imshow(uint8(T));title('梯形低通滤波所得图像');[f1,f2]=freqspace(size(T),'meshgrid');D=100/size(I,1);D0=0.1;D1=0.4;r=sqrt(f1.^2+f2.^2);H=zeros(size(T));H(r<D0)=1;for i=1:size(T,1)for j=1:size(I,2)if r(i,j)>=D0 & r(i,j)<=D1H(i,j)=(D1-r(i,j))/(D1-D0);endendendY=fft2(double(T));Y=fftshift(Y);Ya=Y.*H;Ya=ifftshift(Ya);I=real(ifft2(Ya));figure(2);surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');四、高斯低通滤波器I=imread('bb.jpg');T=rgb2gray(I);figure(1);subplot(1,2,1),imshow(uint8(I));title('原图像');subplot(1,2,2),imshow(uint8(T));title('高斯低通滤波所得图像');[f1,f2]=freqspace(size(T),'meshgrid');D=100/size(I,1);r=f1.^2+f2.^2;H=ones(size(T));for i=1:size(T,1)for j=1:size(T,2)t=r(i,j)/(D*D);H(i,j)=exp(-t);endendY=fft2(double(T));Y=fftshift(Y);Ya=Y.*H;Ya=ifftshift(Ya);I=real(ifft2(Ya));figure(2);surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');。

F28335基于MATLAB的低通滤波器的实现

F28335基于MATLAB的低通滤波器的实现

DSP28335基于MATLAB-FIR低通滤波器的实现1.任务目标:滤波器的截止频率为500HZ,采样频率为128000HZ,采样的点数为256,滤波器的阶数为32,输入信号如下:Sample[i]=511*(sin(2*pi*5*i/(a-1))+sin(2*pi*i*5*3/(a-1))/3+sin(2*pi*i*5*5/(a-1))/5)+5122.实现过程:由MAtlab的FDATOOL计算出滤波器的阶数,再由DSP程序进行卷积运算,最后由CCSV5的Graph功能进行输入前后的波形分析。

3.FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

因此,FIR 滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。

4.算法原理:离散信号序列通过一个离散滤波系统,得到离散输出信号,如果滤波系统的单位脉冲响应为h(n),信号序列为x(n),输出信号为y(n),则使用运算关系式表达他们之间的关系如下:5.MATLAB---FDATOOL参数设置:然后在FILE-EXPORT-ASCII输出文件打开就有滤波器系数了。

6.各种情况下输出的波形图图一:matlab滤波器截止频率Fc设置为5000HZ得到的波形图二:程序自带滤波器参数得到的波形图三:截止频率设置为2000HZ得到的输出波形图四:Fc=1200HZ时的波形图五:Fc=600HZ时的波形图六:FC=2700HZ图七:FC=6000H图八:FC=3500HzFC=4000hzFC=4500HZ卷积算法如下:void LinearConvolution(Uint16 xn,Uint16 hn,float *x,float *h,float *y) {Uint16 i,j,k,l;Uint16 yn; //输出序列y的长度yn=xn+hn-1;for(i=0;i<yn;i++) y[i]=0; //输出数组初始化k=yn-1;for(i=hn-1;i>0;i--) //将*h作为被乘数{l=k;for(j=xn-1;j>0;j--) //数组x[n]的1~(xn-1)与h[i]逐一相乘 {y[l]+=h[i]*x[j];l--;}y[l]+=x[0]*h[i];k--;}l=k;for(j=xn-1;j>0;j--){y[l]+=h[0]*x[j];l--;}y[l]+=x[0]*h[0];}void main(void){Uint16 i;InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;for(i=0;i<a;i++) //产生一个a点的三次谐波叠加而成的方波{Sample[i]=511*(sin(2*pi*5*i/(a-1))+sin(2*pi*i*5*3/(a-1))/3+sin(2*pi*i*5*5/( a-1))/5)+512;//三个正弦波由5个15个25个包含在256个点的时间中// DELAY_US(10);+sin(2*pi*i*5*5/(a-1)) +sin(2*pi*i*5*3/(a-1))/4sin(2*pi*5*i/(a-1))/100+}LinearConvolution(a,b,Sample,h,y1);//线性卷积while(1){//sample=sin(2*pi*5*n/(N-1))+sin(2*pi*15*n/(N-1))/3+sin(2*pi*25*n/(N-1))/5;/* dly[0]=sample;yn=0;for(i=0;i<N;i++) yn+=h[i]*dly[i];for(i=N-1;i>0;i--) dly[i]=dly[i-1];output[n]=yn;if(n==(N-1)) n=0;else n++;*/}}。

matlab 数据滤波处理

matlab 数据滤波处理

matlab数据滤波处理在MATLAB中,数据滤波可以使用不同的方法和函数来实现。

下面是几种常见的数据滤波处理方法:1.移动平均滤波(Moving Average Filter):移动平均滤波是一种简单的滤波方法,通过计算数据序列中相邻数据点的平均值来平滑数据。

可以使用smoothdata函数实现移动平均滤波。

示例:创建示例数据data=randn(1,100);100个随机数应用移动平均滤波smoothed_data=smoothdata(data,'movmean',5);使用移动窗口大小为5的移动平均2.中值滤波(Median Filter):中值滤波是一种非线性滤波方法,将每个数据点替换为相邻数据点的中值。

可以使用medfilt1函数进行中值滤波处理。

示例:创建示例数据data=randn(1,100);100个随机数应用中值滤波smoothed_data=medfilt1(data,5);使用窗口大小为5的中值滤波3.低通滤波器(Low-pass Filter):低通滤波器可以滤除高频噪声,保留信号的低频成分。

MATLAB中可以使用filter函数设计和应用数字低通滤波器。

示例:创建示例数据data=randn(1,100);100个随机数设计低通滤波器fc=0.1;截止频率fs=1;采样频率[b,a]=butter(5,fc/(fs/2));设计5阶巴特沃斯低通滤波器应用低通滤波器smoothed_data=filter(b,a,data);以上示例中的滤波方法和参数可以根据数据的特性和需求进行调整。

使用不同的滤波方法可能需要更多的参数调整和信号处理知识。

根据具体情况,可以选择合适的滤波方法来平滑或处理数据。

MATLAB窗函数法实现FIR的高通-带通和低通滤波器的程序要点

MATLAB窗函数法实现FIR的高通-带通和低通滤波器的程序要点

MATLAB课程设计报告学院:地球物理与石油资源学院班级: 测井(基)11001姓名:大牛啊啊啊学号:班内编号:指导教师: 陈义群完成日期: 2013年6月3日一、 题目 FIR 滤波器的窗函数设计法及性能比较1. FI R滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。

根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。

与I IR滤波器相比,FIR 滤波器的主要特点为: a. 线性相位;b.非递归运算。

2. FIR滤波器的设计FIR 滤波器的设计方法主要有三种:a.窗函数设计法;b.频率抽样发;c.最小平法抽样法; 这里我主要讨论在MA TLAB 环境下通过调用信号分析与处理工具箱的几类窗函数来设计滤波器并分析与比较其性能。

窗函数法设计F IR 滤波器的一般步骤如下:a. 根据实际问题确定要设计的滤波器类型;b. 根据给定的技术指标,确定期望滤波器的理想频率特性;c. 求期望滤波器的单位脉冲响应;d. 求数字滤波器的单位脉冲响应;e. 应用。

常用的窗函数有同。

时与布莱克曼窗结果相当时与海明窗结果相同;时与矩形窗一致;当当885.84414.50]!)2/([1)(120===+=∑∞=x x x m x x I m m4. 常用窗函数的参数函数,可定义为是零阶式中Bessel x I n R I N n I n w windowKaiser n R N n N n n w windowBalckm an n R N n n w windowHam m ing n R N n n w windowHanning N N N N )()5.2.9()(])(})]1/(2[1{[)()4()4.2.9()()]14cos(08.0)12cos(5.042.0[)()3()3.2.9()()]12cos(46.054.0[)()2()2.2.9()()]1cos(5.05.0[)()1(0020ββππππ--=-+--=--=--=5.FIR滤波器的MATLAB实现方式在MATLAB信号分析与处理工具箱中提供了大量FIR窗函数的设计函数,本次用到主要有以下几种:hanning(N) hanning窗函数的调用hamming(N) hamming窗函数的调用blackman(N) blackman窗函数的调用kaiser(n+1,beta) kaiser窗函数的调用kaiserord 计算kaiser窗函数的相关参数freqz求取频率响应filter 对信号进行滤波的函数6.实验具体步骤本次实验分别通过调用hanning ,hamming ,Blackman,kaiser窗函数,给以相同的技术参数,来设计低通,带通,高通滤波器,用上述窗函数的选择标准来比较各种窗函数的优劣,并给以一个简谐波进行滤波处理,比较滤波前后的效果。

高阶低通滤波 matlab 导出 c语言

高阶低通滤波 matlab 导出 c语言

高阶低通滤波matlab 导出c语言全文共四篇示例,供读者参考第一篇示例:高阶低通滤波是信号处理中常用的一种滤波器,它可以帮助我们滤除信号中的高频噪声,使得信号更加平滑和清晰。

在实际应用中,我们经常需要将MATLAB 中设计好的高阶低通滤波器导出到C 语言环境中,以便在嵌入式系统或其他平台上使用。

本文将介绍如何在MATLAB 中设计高阶低通滤波器,并将其导出到C 语言代码中。

一、设计高阶低通滤波器在MATLAB 中设计高阶低通滤波器通常采用滤波器设计工具箱中提供的butter 函数。

这个函数可以根据指定的滤波器阶数和截止频率来设计一个巴特沃斯滤波器。

下面是一个简单的例子:```matlabfs = 1000; % 采样频率fc = 100; % 截止频率order = 4; % 滤波器阶数[b,a] = butter(order, fc/(fs/2), 'low');```在上面的例子中,我们首先指定了采样频率fs、截止频率fc 和滤波器的阶数order,然后调用butter 函数设计低通滤波器,并返回滤波器的系数b 和a。

接下来,我们可以使用这些系数来滤波信号,如下所示:```matlabfiltered_signal = filter(b, a, input_signal);```这样就可以得到滤波后的信号filtered_signal。

在MATLAB 中调试完善高阶低通滤波器后,我们就可以将其导出到C 语言代码中。

二、导出到C 语言代码在导出到C 语言代码之前,我们需要将滤波器的系数b 和a导出到一个头文件中,以便在C 语言代码中使用。

在MATLAB 中可以使用dspdata2c 函数将滤波器系数转换为C 语言代码,如下所示:```matlabdspdata2c(b, 'fir_coeffs.h', 'low_filter_coeffs', 'short', true);dspdata2c(a, 'fir_coeffs.h', 'low_filter_coeffs', 'short', false);```上面的代码将系数b 和a 分别保存到名为fir_coeffs.h 的头文件中,并分别定义为low_filter_coeffs_b 和low_filter_coeffs_a。

matlab中低通滤波器filter的用法

matlab中低通滤波器filter的用法

一、引言Matlab是一种强大的科学计算软件,广泛应用于工程、科学和数学领域。

在信号处理领域,滤波器是一种常用的工具,用于处理不同频率的信号。

低通滤波器是一种常见的滤波器类型,可以用于去除高频噪声或选择低频成分。

在Matlab中,可以使用filter函数来实现低通滤波器的功能。

本文将详细介绍Matlab中低通滤波器filter的用法,包括基本语法、参数设置以及实际应用。

二、基本语法在Matlab中,filter函数的基本语法如下:y = filter(b, a, x)其中,b和a分别是滤波器的分子和分母系数,x是输入信号,y是输出信号。

这里需要注意的是,b和a的长度通常是不相等的,分别对应于滤波器的分子和分母多项式系数。

三、参数设置1. 分子和分母系数的设置在使用filter函数时,需要首先设置滤波器的分子和分母系数。

这些系数可以通过滤波器的设计方法(如巴特沃斯滤波器、切比雪夫滤波器等)得到,也可以直接手动设置。

需要注意的是,分子和分母系数需要按照特定的格式输入,确保其正确性和合法性。

2. 输入信号的设置输入信号x可以是任何形式的信号数据,如数字信号、模拟信号、音频信号等。

在使用filter函数时,需要确保输入信号x的格式和长度与滤波器的要求相匹配,否则可能导致错误或不良效果。

3. 输出信号的获取在调用filter函数之后,会得到输出信号y。

可以将输出信号y保存到变量中,也可以通过绘图工具将其可视化显示。

在实际应用中,通常需要对输出信号y进行进一步的处理或分析,以满足具体的需求。

四、实际应用低通滤波器在实际应用中有着广泛的用途,如音频信号去噪、生物医学信号分析、通信系统等领域。

下面以音频信号去噪为例,介绍低通滤波器filter的实际应用。

```matlab读取音频文件[x, fs] = audioread('noisy_audio.wav');设计低通滤波器fc = 1000; 截止频率fs_new = 2 * fc; 采样频率设为截止频率的两倍[b, a] = butter(4, fc/fs_new);使用filter函数进行滤波y = filter(b, a, x);可视化输出信号t = (0:length(x)-1) / fs;t_new = (0:length(y)-1) / fs_new;figure;subplot(2,1,1);plot(t, x); title('原始音频信号');subplot(2,1,2);plot(t_new, y); title('滤波后的音频信号');保存滤波后的音频文件audiowrite('clean_audio.wav', y, fs_new);```在上述示例中,我们首先读取了一个存在噪声的音频文件,然后设计了一个低通滤波器,设置了截止频率为1000Hz,并使用了4阶巴特沃斯滤波器。

matlab设计低通滤波器

matlab设计低通滤波器

重庆邮电大学本科毕业设计(论文)摘要在当今的数字信息的世界里,数字信号处理已经演变成一门越来越重要的学科,并在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

其中数字滤波是数字信号处理的重要内容。

数字滤波器可分为IIR和FIR两大类,对于IIR滤波器的设计来说主要有脉冲响应不变法和双线性变换法,而对于FIR数字滤波器的设计来说主要有窗函数法和频率采样设计法。

本文应用MATLBA对数字低通滤波器进行仿真,并给出一定频率的信号通过所设计的滤波器来验证滤波器的性能,主要的研究工作主要包括以下几方面的内容:(1)介绍IIR滤波器和FIR滤波器的结构特点并比较两者之间的差别。

(2)在MATLAB中应用双线性变换法和脉冲响应不变法设计IIR滤波器,给出了滤波器的频率特性图和相位特性图。

(3)通过编写MATLAB程序用窗函数设计法和频率采样法来完成FIR低通滤波器的设计,并给出几个不同频率的信号通过所设定的滤波器来验证滤波器的性能。

(4)在MATLAB中应用Simulink模块来仿真FIR低通滤波器,并在示波器上同时显示输入信号的频率和输出信号的频率,最后对结果进行分析。

【关键字】FIR滤波器IIR滤波器, 双线性变换法脉冲响应不变法窗函数法频率采样法MATLABABSTRACTIn nowadays world of digital information, digital signal processing has become an increasingly important subject, and has been widely applied in all fields, such as medicine, communications, and other areas, digital filters are important elements of digital signal processing. Digital filters can be divided into two kinds of IIR and FIR, IIR filter design for pulse response method and bilinear transformation method, for FIR digital filter design, the main Windows function method and frequency of sampling design.In this paper simulation using MATLAB for digital low-pass filter, and to give a signal of a certain frequency through the filters designed to verify the performance of filter, the main research work mainly includes the following content:(1) Describes the structure of FIR and IIR filters filter characteristics and comparison of the differences between the two.(2) In MATLAB using bilinear transformation method and impulse response method design of IIR filters, to out of the filters of frequency response and phase characteristics.(3) Design method by writing MATLAB programs use the windows function and frequency sampling method to accomplish the design of FIR low-pass filters, and gives several different frequency signals passes through a set of filters to verify that the filter's performance.(4) In the MATLAB Simulink simulation FIR low-pass filter module to the application, and also on the scope displays the frequency of the input signal and the output signal frequency, final analysis of the results.【Key words】FIR digital IIR digital filter Bilinear transformation methodImpulse response method Windows functionFrequency sampling method MATLAB目录前言 (1)第一章数字滤波器 (2)第一节数字滤波器的简介 (2)第二节数字滤波器的应用 (3)第三节数字滤波器的实现方法分析及优点 (4)第四节MATLAB和Simulink简介 (5)第五节本章小结 (7)第二章数字滤波器的结构和设计原理 (8)第一节数字滤波器的基本结构 (8)一、IIR滤波器的基本结构 (8)二、FIR滤波器的基本结构 (10)第二节数字滤波器的设计原理 (12)一、滤波器的设计步奏 (12)二、滤波器的性能指标 (13)第三节IIR滤波器与FIR滤波器的分析比较 (13)第四节本章小结 (15)第三章IIR滤波器的设计 (16)第一节脉冲响应不变法的基本原理 (16)一、变化原理 (16)二、混叠失真 (16)三、主要特点 (17)四、MATLAB(脉冲响应不变法)设计滤波器 (18)第二节双线性不变法的基本原理 (19)一、变换原理 (19)二、主要优缺点 (19)三、MATLAB(双线性变化法)设计数字低通滤波器 (19)第三节本章小结 (21)第四章FIR滤波器的设计 (22)第一节线性相位FIR滤波器的特点 (22)第二节利用窗函数设计FIR低通滤波器 (24)一、窗函数的基本思想 (24)二、几种常用的窗函数 (24)第二节频率采样法设计FIR低通滤波器 (32)一、频率采样设计法的基本原理 (32)二、线性相位的约束 (32)三、逼近误差及其改进措施 (32)第三节FIR数字滤波器的优化设计 (35)第四节本章小结 (36)第五章仿真结果及分析 (37)第一节MATLAB(窗函数法)设计FIR数字低通滤波器 (37)第二节MATLAB(频率采样法)设计FIR数字低通滤波器 (39)第三节Simulink仿真FIR滤波器 (42)第四节本章小结 (44)结论 (45)致谢 (46)参考文献 (46)附录 (47)一、英文原文 (48)二、英文翻译 (55)三、仿真脚本 (62)重庆邮电大学本科毕业设计(论文)前言模拟滤波器与数字滤波器的设计对工程,应用数学及计算机科学都是非常重要的。

matlab设计iir低通滤波器代码

matlab设计iir低通滤波器代码

Matlab是一种强大的数学计算工具,广泛用于工程、科学和技术领域。

IIR(Infinite Impulse Response)滤波器是一种数字信号处理中常用的滤波器,可用于信号去噪、数据平滑等应用。

本文将介绍如何使用Matlab设计一个IIR低通滤波器的代码,以便读者能够了解IIR滤波器的原理和在Matlab中的实现方式。

IIR低通滤波器是一种将高频信号滤除,只保留低频信号的滤波器。

在数字信号处理中,我们经常需要对信号进行平滑处理或者去除噪音,这时就需要用到低通滤波器。

IIR低通滤波器相比于FIR(Finite Impulse Response)滤波器,具有更窄的过渡带和更好的通带纹波特性,在某些应用场景下具有更好的性能。

设计IIR低通滤波器的代码步骤如下:1. 定义滤波器的参数在设计IIR低通滤波器之前,首先需要定义滤波器的参数,包括通带边界频率、阻带边界频率、通带纹波和阻带衰减等。

这些参数将决定最终滤波器的性能。

2. 调用Matlab工具箱函数设计滤波器Matlab提供了多种设计IIR滤波器的工具箱函数,如butter、cheby1、cheby2和ellip等。

用户可以根据需要选择相应的函数来设计滤波器。

以butter函数为例,其调用形式为:[b, a] = butter(n, Wn, 'low');其中,n表示滤波器的阶数,Wn为归一化的截止频率。

3. 绘制幅频特性曲线设计完滤波器之后,可以通过freqz函数绘制滤波器的幅频特性曲线,以便直观地了解滤波器的性能。

除了以上的代码步骤,还可以对滤波器进行参数优化、性能评估等工作。

设计IIR低通滤波器的代码并不复杂,但需要对滤波器的原理和Matlab编程有一定的了解。

在实际应用中,设计IIR低通滤波器的代码可以根据具体的需求进行定制,比如考虑信号的频率特性、噪声的特点等。

通过不断地调试和优化滤波器的参数,可以得到满足实际需求的滤波器设计方案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四种低通滤波器:
一、理想低通滤波器
I=imread('bb.jpg');
T=rgb2gray(I);
figure(1);
subplot(1,2,1),imshow(uint8(I));
title('原图像');
subplot(1,2,2),imshow(uint8(T));
title('理想低通滤波所得图像');
[f1,f2]=freqspace(size(T),'meshgrid');
H=ones(size(T));
r=sqrt(f1.^2+f2.^2);
H(r>0.1)=0;
Y=fft2(double(T));
Y=fftshift(Y);
Ya=Y.*H;
Ya=ifftshift(Ya);
I=ifft2(Ya);
figure(2);
surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');
二、巴特沃斯低通滤波器
I=imread('bb.jpg');
T=rgb2gray(I);
figure(1);
subplot(1,2,1),imshow(uint8(I));
title('原图像');
subplot(1,2,2),imshow(uint8(T));
title('巴特沃斯低通滤波所得图像');
[f1,f2]=freqspace(size(T),'meshgrid');
D=0.3;
r=f1.^2+f2.^2;
n=4;
for i=1:size(T,1)
for j=1:size(T,2)
t=r(i,j)/(D*D);
H(i,j)=1/(t^n+1);
end
end
Y=fft2(double(T));
Y=fftshift(Y);
Ya=Y.*H;
Ya=ifftshift(Ya);
I=real(ifft2(Ya));
figure(2);
surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');
三、梯形滤波器
I=imread('bb.jpg');
T=rgb2gray(I);
figure(1);
subplot(1,2,1),imshow(uint8(I));
title('原图像');
subplot(1,2,2),imshow(uint8(T));
title('梯形低通滤波所得图像');
[f1,f2]=freqspace(size(T),'meshgrid');
D=100/size(I,1);
D0=0.1;
D1=0.4;
r=sqrt(f1.^2+f2.^2);
H=zeros(size(T));
H(r<D0)=1;
for i=1:size(T,1)
for j=1:size(I,2)
if r(i,j)>=D0 & r(i,j)<=D1
H(i,j)=(D1-r(i,j))/(D1-D0);
end
end
end
Y=fft2(double(T));
Y=fftshift(Y);
Ya=Y.*H;
Ya=ifftshift(Ya);
I=real(ifft2(Ya));
figure(2);
surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');
四、高斯低通滤波器
I=imread('bb.jpg');
T=rgb2gray(I);
figure(1);
subplot(1,2,1),imshow(uint8(I));
title('原图像');
subplot(1,2,2),imshow(uint8(T));
title('高斯低通滤波所得图像');
[f1,f2]=freqspace(size(T),'meshgrid');
D=100/size(I,1);
r=f1.^2+f2.^2;
H=ones(size(T));
for i=1:size(T,1)
for j=1:size(T,2)
t=r(i,j)/(D*D);
H(i,j)=exp(-t);
end
end
Y=fft2(double(T));
Y=fftshift(Y);
Ya=Y.*H;
Ya=ifftshift(Ya);
I=real(ifft2(Ya));
figure(2);
surf(H,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); title('频谱图');。

相关文档
最新文档