导航:首页 > 净水问答 > 用matlab编写过滤函数

用matlab编写过滤函数

发布时间:2021-02-11 17:30:19

❶ 用MATLAB分别写中直滤波和均值滤波程序,要求不用函数!老师布置的作业,明天交 谢谢

clear;
close all;
I = imread('eight.tif');
J = imnoise(I,'salt & pepper',0.02);
K = medfilt2(J);
imshow(J);title('噪声干扰图像')
figure, imshow(K);title('medfilt2滤波图像')
X=J;a=2;b=2;
k=floor(a*b/2)+1;
[M,N]=size(X);
uint8 Y=zeros(M,N);
funBox=zeros(a,b);
temp=zeros(a*b);

for i=1:M-a
for j=1:N-b
funBox=X(i:i+a,j:j+b);
temp=funBox(:);
tempSort=sort(temp);
Y(i,j)=tempSort(k);
end;
end;
figure, imshow(Y);title('自编程序滤波图像')

clear;
close all;
c=imread('123.png'); %把彩色图片转化成灰度图片,256级
figure,imshow(c),title('原始图象'); %显示原始图象
g=imnoise(c,'gaussian',0.1,0.002); %加入高斯噪声
figure,imshow(g),title('加入高斯噪声之后的图象'); %显示加入高斯噪声之后的图象

%实验步骤二:用系统预定义滤波器进行均值滤波
n=1;
A=fspecial('average',n);%生成系统预定义的3X3滤波器
Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化
figure,imshow(Y),title('系统函数滤波图像'); %显示滤波后的图象
a(1:n,1:n)=1; %a即n×n模板,元素全是1
p=size(g); %输入图像是p×q的,且p>n,q>n
x1=double(g);
x2=x1;
%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素
for i=1:p(1)-n+1
for j=1:p(2)-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵(即模板)中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
%实验步骤三:用自己的编写的函数进行均值滤波
%调用自编函数进行均值滤波,n为模板大小
figure,imshow(d),title('自编程序滤波图像'); %显示滤波后的图象

❷ 在matlab中,中值滤波函数怎么编,求代码

%中值滤波,以某点前n个点的中值作为专该点的估计值
functiony=zhong(x,n)%x为列向属量
m=length(x);
y=zeros(m,1);
fori=1:n
y(i,1)=median(x(1:i,1:1));
end
fori=n+1:m
y(i,1)=median(x(i-n:i-1,1:1));
end
plot((1:m),x,'-b');holdon
plot((1:m),y,'-r')

❸ 如何用MATLAB编写一个程序实现带滤波器,MATLAB程序语言越简单越好,需要调试成功的,谢谢

用C语言(或MATLAB
语言)编写FFT程序时,要求采用人机界面形式:
N
,
T
,
f
变量均由键盘输入,补零或不补零要求设置一开关来选择。

❹ 用matlab编写使用二维高斯低通滤波器的函数,使用大小为3*3,标准差分别为0.5,1.5,2.5

高斯低通滤波对图像进行低通滤波代码,这个是灰度图像的
彩色图像就是取出RGB三个分量进行滤波再整合

I1=imread('flower.jpg'); %读取图像
I=rgb2gray(I1); %将图像变为灰度图象
%将灰度图像的二维不连续Frourier变换的零频率成分移到频谱的中心
s=fftshift(fft2(I));
[M,N]=size(s); %分别返回s的行数到M中,列数到N中
n=2; %对n赋初值
%GLPF滤波,d0=5,15,30(程序中以d0=30为例)
d0=30; %初始化d0
n1=floor(M/2); %对M/2进行取整
n2=floor(N/2); %对N/2进行取整
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离
h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数
s(i,j)=h*s(i,j); %GLPF滤波后的频域表示
end
end
s=ifftshift(s); %对s进行反FFT移动
%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数
s=uint8(real(ifft2(s)));
figure; %创建图形图像对象
imshow(s); %显示GLPF滤波处理后的图像
title('GLPF滤波(d0=30)'); %为经GLPF滤波后的图像添加标题

❺ 编写用均值滤波去噪的matlab程序,用两种方法实现.(重谢)

方法一:filter2

clearall;

I=imread('lena.bmp');

%读入预处理图像

imshow(I)

%显示预处理图像

K1=filter2(fspecial('average',3),I)/255;

%进行3*3均值滤波

K2=filter2(fspecial('average',5),I)/255;

%进行5*5均值滤波

K3=filter2(fspecial('average',7),I)/255;

%进行7*7均值滤波

figure,imshow(K1)

figure,imshow(K2)

figure,imshow(K3)

方法二:双循环语句,移动平均法

%均值滤波

clc,clear;

f=imread('lena.bmp');

subplot(121),imshow(f),title('原图');

f1=imnoise(f,'gaussian',0.002,0.0008);

%subplot(222),imshow(f1),title('添加高斯噪声图');

k1=floor(3/2)+1;

k2=floor(3/2)+1;

X=f1;

[M,N]=size(X);

uint8Y=zeros(M,N);

funBox=zeros(3,3);

fori=1:M-3

forj=1:N-3

funBox=X(i:i+3,j:j+3);

s=sum(funBox(:));

h=s/9;

Y(i+k1,j+k2)=h;

end;

end;

Y=Y/255;

subplot(122),imshow(Y),title('均值滤波');

实现图:

❻ 急!Matlab里面模拟滤波器函数怎么使用啊谢谢!

你得到系数a,b后,你信号也知道吧,假设是x,然后你就用y=filter(b,a,x);
我当时学时也很困惑怎么用,后来我做的尝试,我给你一个例子看看吧,是我学习时自己写的

设计一个高通滤波器,并检验它的性能
采样率为10kHZ
阻带边缘为1.5Khz,衰减为40bB
通带边缘为2kHz,波纹为3Db

>>Fs=1e4;
>>fs=1.5e3;
>>fp=2e3;
>>As=40;
>>Rp=3;
>>wp=2*fp/Fs;
>>ws=2*fs/Fs;
>>[N,wn]=cheb2ord(wp,ws,Rp,As);
>>[b,a]=cheby2(N,As,wn,'high');
>>[db,mag,pha,grd,w]=freqz_m(b,a);
>> subplot(2,2,1);plot(w/pi,mag);
>> axis([0,1,0,1]);
>> setX([0 0.3 0.4 1]);
>>setY([0.01 0.7279 1])
>> title('Magnitude Response');
>> subplot(2,2,2);plot(w/pi,db);
>> axis([0 1 -70 0])
>> setX([0 0.3 0.4 1])
>> setY([-40 -2.7589])
>> title('Magnitude Response in dB');
然后给你一个信号x=cos(0.2*pi*n);
>>n=0:200;
>>x=cos(0.6*pi*n);
>>y=filter(b,a,x);
>>subplot(2,2,3);plot(n,x);
>>subplot(2,2,4);plot(n,y);
>>x1=fft(x,201);
>>x11=abs(x1);
>>subplot(2,2,1);stem(n,x11);
>>y1=fft(y,201);
>>y11=abs(y1);
>>subplot(2,2,2);stem(n,y11);
>>setX([0 60 140 201])
>>title('FFT of y');
>>subplot(2,2,1);stem(n,x11);
>>setX([0 60 140 201])
>>title('FFT of x');
>>g=x11-y11;
>>subplot(2,2,3);stem(n,g);
你运行一下,就可以看到结果,刚好把此信号滤掉

给你一个设计思路,你改变截止频率和阻带衰减就可以了

>> %假设截止频率为W,我随便定义一下
>> %比如wp=0.3*pi;ws=0.4*pi
>> wp=0.3*pi;ws=0.4*pi;
>> %阻带衰减为50分贝
>> %通带波纹为0.2分贝
>> As=50;Rp=0.2;
>> %那么可以用两个函数得到系数a,b
>> [N,wn]=buttord(wp/pi,ws/pi,Rp,As);
>> [b,a]=butter(N,wn);
>> %该滤波器就是从截止频率到无穷远都不响应

❼ 使用matlab编写函数,

%%
当x<=2,f(x)=0.5x/;2<x<=6,f(x)=1.5-0.25x;x>6,f(x)=0.5;
%
并调用此函数,绘制在x=[0,2]范围的f(x)*f(x+2)曲线。
%
根据题意,编写如下函数并内保存为funcfx.m
function
fx
=
funcfx(x)
n=length(x);
fx=[];
for
i=1:n

if
x(i)
<=
2

fx(i)
=
0.5
.*
x(i);

elseif
(x(i)
>
2)
&
(x(i)
<=
6)

fx(i)
=
1.5
-
0.25
.*
x(i);

elseif
x(i)>6

fx(i)
=
0.5;

end
end

保存函数后调用,容代码如下:
x=-6:20;
fx=funcfx(x);
plot(x,fx,'r*')

❽ 用MATLAB编写函数..

function f=fun(x)
if x<0
f=x.^2+1;
elseif x>=0&x<=1
f=x;
elseif x>1
f=x.^3-2;
end

❾ Matlab滤波函数filter自己写用Function简单构造一个

你那,需要用滤波器。

❿ 急求用MATLAB编写用滤波法实现SSB调制的程序(提示:使用LPF函数实现滤波)

你用 Perl mysql 乱码 当关键字网络一下,会找到相当多的相关的文章。这类乱码错误基本上内来说就是编码的不同造成的容。你用Notepad打开一个GB编码的TXT文件不会看到乱码,打开一个UTF-8编码的TXT文件同样不会看到乱码,这并不能说明GB编码和UTF-8是一样的。

阅读全文

与用matlab编写过滤函数相关的资料

热点内容
河南净水器品牌代理厂商电话多少 浏览:492
石油蒸馏产出物顺序 浏览:892
普瑞斯空气净化器负离子怎么用 浏览:501
超滤反洗与气洗步骤 浏览:997
污水设施验收 浏览:522
德龙咖啡机除垢上海 浏览:756
ro膜多大好 浏览:687
医院超纯水需要什么资质 浏览:963
什么相当半透膜渗透作用 浏览:559
小米净水器需要用什么水 浏览:533
乙醇对不饱和树脂会变慢吗 浏览:588
新买的饮水机为什么会有塑料味 浏览:451
水垢温度 浏览:896
污水排放超标十四倍处罚多少 浏览:367
edi的两大要素 浏览:25
溶剂型sma树脂 浏览:103
pvdf超滤芯内压式好不好 浏览:496
豪爵vf125怎么换空气滤芯 浏览:672
安吉尔a6新滤芯怎么清洗 浏览:713
怎样去除茶壶里的水垢小妙招 浏览:854