请帮我用matlab在时域和频域上分别设计低通和高通滤波器程序

作者&投稿:权味 (若有异议请与网页底部的电邮联系)
用matlab频域低通滤波,频域高通滤波处理彩色图像的程序~

程序如下:

clear all;
clc;
I=imread('up4-Amp.png');
OutImg=I;
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
R=medfilt2(R,[3,3]);
G=medfilt2(G,[3,3]);
B=medfilt2(B,[3,3]);
I1=cat(3,R,G,B); % 对彩色图像R,G,B三个通道分别进行3×3模板的中值滤波 cat函数用于连接两个矩阵或数组
R=filter2(fspecial('average',3),R)/255;
G=filter2(fspecial('average',3),G)/255;
B=filter2(fspecial('average',3),B)/255;
I2= cat(3,R,G,B); %对彩色图像R,G,B三个通道分别进行3×3模板的均值滤波
figure,imshow(I);
title('原图')
figure,
imshow(I1);
title('中值滤波')
figure,imshow(I2);
title('均值滤波')

扩展资料:注意事项
1、在频域滤波,由于是点乘,所以滤波模板矩阵和图像矩阵必须尺寸一样。
2、因为尺寸一样,它们的原点必须要对齐。
3、因在进行离散傅里叶变换后,在频域点乘,相当于在时域卷积,但是这个时候实际上是对时域周期矩阵进行卷积。直接在时域卷积,matlab默认是在边界补0。
4、Matlab freqz2()这个函数可以自动得到一个指定尺寸的,对应于时域的频域模板。
5、图像经过傅里叶变换后,它的原点在左上角。而模板经过freqz2后,原点在中心,所以只要平移其中的一个就好了。
6、在对原图像进行傅里叶变换之前,按照一定规则补0就好了。

用padarray函数做。具体用法请看帮助文档。

给你些资料,希望对你有帮助~~~

模拟原型法

采用经典低通滤波器作为连续域上的设计模型,通过频域变换得到IIR数字滤波器,最后还要进行离散化处理。Matlab提供的低通模拟滤波器原型函数包括:besselap,buttap,cheb1lp,cheb2ap,ellipap;频域变换函数包括:lp2bp,lp2bs,lp2hp,lp2lp;离散化处理函数有bilinear和impinvar。

完全设计法

Matlab信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便。

设计Butterworth滤波器用函数butter(),可以设计低通、高通、带通和带阻的数字和模拟滤波器,其特性是通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。

设计Chebyshev I型滤波器用函数chebyl()。可以设计低通、高通、带通和带阻的数字和模拟ChebyshevI型滤披器,其通带内为等波纹,阻带内为单调。Chebyshev I型滤波器的下降斜度比II型大,但其代价是通带内波纹较大。

设计Chebyshev II型滤波器用函数cheby2()。可以设计低通、高通、带通和带阻的数字和模拟Chebyshev II型滤波器,其通带内为单调,阻带内等波纹。Chebyshev II型滤波器的下降斜度比I型小,但其阻带内波纹较大。

设计椭圆滤波器用函数ellip(),与cheby1,cheby2类似,可以设计低通、高通、带通和带阻的数字和模拟滤波器。与Butterworth和chebyshev滤波器相比,ellip函数可以得到下降斜度更大的滤波器,得到通带和阻带均为等波纹。一般情况下,椭圆滤波器能以最低的阶实现指定的性能指标。

直接设计法

直接设计方法的思想是基于给定的滤波器参数直接在离散域上寻找合适的数字滤波器,他不限于常规的滤波器类型,如低通、高通、带通和带阻等。这种方法甚至可以设计多带的频率响应,Matlab提供yulewalk函数用于辅助设计。

通用Butterworth设计方法

使用这种方法设计的Butterworth数字滤波器可以有不同数目的零点和极点,Matlab提供的maxflat函数实现了这一功能。这个函数与butter函数很相似,但他可以指定两个阶参数,其中归一化和非归一化各一个。如果这两个参数的值相同,那么他与butter函数的结果就是相同的。

参数建模法

寻找接近于所需要设计的滤波器的通用模型,时域上的建模函数为lpc,prony,Stmcb;频域上的建模函数有invfreqs和invfreqz

%设计低通滤波器:

[N,Wc]=buttord()

%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc); %设计Butterworth低通滤波器

[h,f]=freqz(); %求数字低通滤波器的频率响应

figure(2); % 打开窗口2

subplot(221); %图形显示分割窗口

plot(f,abs(h)); %绘制Butterworth低通滤波器的幅频响应图

title(巴氏低通滤波器'');

grid; %绘制带网格的图像

sf=filter(a,b,s); %叠加函数S经过低通滤波器以后的新函数

subplot(222);

plot(t,sf); %绘制叠加函数S经过低通滤波器以后的时域图形

xlabel('时间 (seconds)');

ylabel('时间按幅度');

SF=fft(sf,256); %对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w= %新信号角频率

subplot(223);

plot()); %绘制叠加函数S经过低通滤波器以后的频谱图

title('低通滤波后的频谱图');

%设计高通滤波器

[N,Wc]=buttord()

%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc,'high'); %设计Butterworth高通滤波器

[h,f]=freqz(); %求数字高通滤波器的频率响应

figure(3);

subplot(221);

plot()); %绘制Butterworth高通滤波器的幅频响应图

title('巴氏高通滤波器');

grid; %绘制带网格的图像

sf=filter(); %叠加函数S经过高通滤波器以后的新函数

subplot(222);

plot(t,sf); ;%绘制叠加函数S经过高通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Time waveform');

w; %新信号角频率

subplot(223);

plot()); %绘制叠加函数S经过高通滤波器以后的频谱图

title('高通滤波后的频谱图');

%设计带通滤波器

[N,Wc]=buttord([)

%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc); %设计Butterworth带通滤波器

[h,f]=freqz(); %求数字带通滤波器的频率响应

figure(4);

subplot(221);

plot(f,abs(h)); %绘制Butterworth带通滤波器的幅频响应图

title('butter bandpass filter');

grid; %绘制带网格的图像

sf=filter(a,b,s); %叠加函数S经过带通滤波器以后的新函数

subplot(222);

plot(t,sf); %绘制叠加函数S经过带通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Time waveform');

SF=fft(); %对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w=( %新信号角频率

subplot(223);

plot(')); %绘制叠加函数S经过带通滤波器以后的频谱图

title('带通滤波后的频谱图');

,fmg

用matlab处理时域数据问题
答:应该是你设置的频率范围不正确。改为下式试试:f=linspace(-fs/2,fs/2,1024);或者,如果想让频谱曲线移至零频处,使用fftshift函数。

以知信号如何得到时域和频域波形图?用Matlab
答:stem()函数可以画出离散点列plot()可以画连续信号频域有好多种画法,一种是先FFT之后再自己画,一种是先算出系统函数用freqz()画幅频,相频

matlab中一数组的时域曲线如何转换为频域曲线
答:特殊情况下可以看出数据点所满足的解析式,使用拟合,然后对拟合得到的函数进行傅里叶变换,用matlab的fourier函数即可。由于一般情况中的fft更具有应用性,下面着重举例说明fft。引用一段matlab帮助文件提供的代码作说明:(%后面是中文或英文注释)clc;clear;Fs = 1000; % Sampling frequency,取样频率...

信号与系统分析如何利用MATLAB进行实践操作?
答:连续时间信号与系统:在时域、频域和复频域中进行详细分析。离散时间信号与系统:重点关注时域与z域的理论与应用。系统信号流图与模拟:通过计算机模拟直观展示系统工作原理。本书的目标是帮助学生在掌握理论的同时,熟练运用MATLAB进行实践,通过计算机处理复杂的数学运算,并利用MATLAB模拟关键概念和难点,以...

已知的一组原始数据(x,y),怎么用matlab绘制时域波形图和频谱图
答:输入和输出的数组x和y是离散后的实际值,还是传递函数的输入和输出,这个需要先反拉氏变换ilaplace。然后用傅里叶变换fft实现。频谱图还要用到fftshift。

如何用matlab对一个的波形信号进行时域内截止频率为300k赫兹的低通滤波...
答:滤波器有很多种设计方式。最简单的,就是用已有的buttord计算出最符合条件的巴特沃思滤波器的阶数n和截止频率,再用butter计算n阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。用freqz函数画出滤波器的幅频、相频图。用filter滤波。

(高分求助),如何用MATLAB,把 时域 转化为 频域 ,如果能成功解决我的问题...
答:这个挺好玩的。比较简单,但是需要采样频率,你有没有?比如说吧:fs=100;N=128; %采样频率和数据点数n=0:N-1;t=n/fs; %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n...

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

MATLAB中运用傅里叶逆变换将频域转换在时域内
答:代码比较乱,梳理一下:m=60;K=1.7*10^8;C=3.625*10^4;Ll=0.625;E=2.10*10^11;I=3.04*10^(-5);wl=60*pi;v=40000/3600;syms f0 ;H=i*(wl-2*pi*f0)*Ll/v;k=K+i*C*(2*pi*f0);W=k*exp(H)/E/I;A=(((2*pi*f0)^2)*m/E/I)^(1/4);B=1/v/[E*I*(...

如何利用MATLAB产生OFDM时域信号波形
答:如何利用MATLAB产生OFDM时域信号波形 10  我来答 2个回答 #热议# 蓝洁瑛生前发生了什么?dabfxz 2012-11-03 · TA获得超过3473个赞 知道大有可为答主 回答量:1836 采纳率:85% 帮助的人:487万 我也去答题访问个人页 关注 展开全部 拷到你的Matlab里,名字就叫OFDM_Demo好了。不光有你上面的...