matlab怎么用中值滤波来处理一个意味数组

如题所述

%给你个程序参考,中值滤波效果不一定好,你可以依据你的数据进行改进:
clc;clf
clear all
%载入数据 test1.mat 数据文件
load('test1'); % 也可以直接定义: test=[1 2 ……]

% test1 数组长度
n1=size(test1,1);
x1=1:n1;
test1=test1(x1);

figure(1)
plot(x1,test1,'b-')
title('test1的原始数据图')

%中值滤波法滤除噪声
figure(2)
w=7; %取窗口值为7,可自己设置其它的值试试看效果
for i=1:n1-w
v=i:i+w-1;%取滑动窗口的元素向量
%将窗口中元素排序
qr=sort(test1(v));
%取排序后的中间元素
me=qr(fix(w/2)+1);
end

%画图
plot(x1,test1)
title('test1的滤波后数据图')

%设置图形的轴限,观察后设置的,便于对比
axis([0,100,0,100])追问

你能不能帮我处理一下这个数据啊?就用中值滤波的方法。帮帮忙吧。麻烦了

来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-12
b=medfilt2(a,[m,n]);
b是中值滤波后的图象矩阵,a是原图矩阵,m和n是处理模版大小,默认3×3。追问

不是处理图像,我想处理一个数组。纯数字的。。谢谢

追答

一样的, 严格的说灰度图像就是一个二维数组
把[m,n]改成你的模板的大小,一维就该为[1,n]

matlab 中值滤波
3、matlab的中值滤波实现方式:调用函数:A=medfilt1(B,n)、B为输入信号,A为滤波后的信号,即结果。4、对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了...

在matlab中,中值滤波函数怎么编,求代码???
中值滤波,以某点前n个点的中值作为该点的估计值function y = zhongzhi(x,n) %x为列向量m = length(x);y = zeros(m,1);for i = 1:n y(i,1) = median(x(1:i,1:1));endfor i = n+1:m y(i,1) = median(x(i-n:i-1,1:1));endplot((1:m),x,'-b');hold...

如何在matlab中用高斯滤波对一维数据去噪
建议你不要使用高斯滤波。推荐你使用一维中值滤波 matlab的函数为 y = medfilt1(x,n);x为数组,是你要处理原始波形,n是中值滤波器的参数(大于零的整数)。y是滤波以后的结果(是数组)后面再 plot(y);就能看到滤波以后的结果 经过medfilt1过滤以后,y里储存的是低频的波形,如果你需要高频波形,...

matlab一维中值滤波的问题
中值滤波是将每一点的值设置为该点某邻域窗口内的所有点的中值。这里的n就是领域的大小。当n为偶数的时候,第k个点的滤波后的值是x(k-n\/2)~ x(k+(n\/2)-1)的中位数 当n为奇数的时候,第k个点的滤波后的值是 x(k-(n-1)\/2)~x(k+(n-1)\/2)的中位数 至于n该取多少取决于你希...

求均值滤波和中值滤波算法的MATLAB代码
5*5的均值滤波代码 w2=fspecial('average',[5 5]); %% 先定义一个滤波器 h=imfilter(a,w2,'replicate'); %%让图像通过滤波器 imshow(h);imwrite(h,'8.jpg');中值的暂时还不会

数字图像处理中值滤波计算
用matlab A=你的图像矩阵 imshow(medfilt2(A,[3 3]))其实口算也可以,把每一个像素和其八邻域的像素排序,取中间那个值作为这个点的像素值。

用MATLAB对一维曲线进行中值滤波
plot(x,a); 改成 plot(a);plot(x,y); 改成plot(y);

Matlab中 如何导入png图片 并进行中值滤波(3*3) 然后进行二值化处理阈值...
image to black-white的意思 subplot(3,1,1);imshow(X);title('原图');subplot(3,1,2);imshow(g);title('3*3中值滤波');subplot(3,1,3);imshow(g1);title('3*3中值滤波+二值化处理');结果与前面的相同。参考资料:《Digital Image Processing Using MATLAB》Rafael C.Gonzalez ...

Matlab怎么求一组一维数据的阈值
先过一个比较器(大于某一阈值为A,小于某一阈值为B),然后再中值滤波试试。感觉频域方法比较难做,要去毛刺一般都会削弱高频。

给出如下图象采用3×3中值滤波后的结果。
用matlab,中值滤波函数B=medfilt2(A);均值滤波是用卷积实现的。设置一个3x3的矩阵,每个元素都是1\/9。B=filter2(B,A)%实际上filter2函数就是进行了一次2维卷积。可以用conv2替换。

相似回答