Matlab中值滤波程序,已知源数据
时间: 2023-05-26 13:07:06 浏览: 45
以下是一种简单的 Matlab 值滤波程序,适用于二维矩阵的平滑操作。
```matlab
function output = myMedianFilter(input, windowSize)
% input: 二维矩阵,待进行值滤波的数据
% windowSize: 一个正奇数,表示滤波器的窗口大小
% output: 二维矩阵,值滤波后的结果
% 生成一个全 0 的与输入矩阵同大小的矩阵
output = zeros(size(input));
% 获得窗口的一半大小
halfWindowSize = (windowSize - 1) / 2;
% 对于每一个像素
for i = 1:size(input, 1)
for j = 1:size(input, 2)
% 生成一个窗口,根据当前像素为中心
window = input(max(1, i-halfWindowSize):min(size(input,1), i+halfWindowSize), max(1,j-halfWindowSize):min(size(input,2), j+halfWindowSize));
% 对窗口中的值进行排序,并取中间的值
output(i, j) = median(sort(window(:)));
end
end
end
```
这个程序使用 MATLAB 中的 median 函数来实现单一窗口中的值排序和中间值选择。在像素访问循环中,我们生成一个新的窗口矩阵,根据像素位置作为中心,然后使用该窗口中的 median 函数来计算新像素值。最终结果存储在输出矩阵 output 中。