高斯滤波器matlab代码
时间: 2023-10-03 17:07:28 浏览: 134
下面是一个简单的高斯滤波器的 MATLAB 代码:
```matlab
function [filtered_img] = gaussian_filter(img, sigma)
% img: 输入图像
% sigma: 高斯核的标准差
% 创建高斯核
kernel_size = 2 * ceil(3 * sigma) + 1;
kernel = fspecial('gaussian', kernel_size, sigma);
% 对图像进行滤波
filtered_img = imfilter(img, kernel, 'replicate');
end
```
使用方法:
```matlab
img = imread('example.jpg');
sigma = 3;
filtered_img = gaussian_filter(img, sigma);
```
其中,`img`是输入图像,`sigma`是高斯核的标准差。`filtered_img`是滤波后的结果。
这里使用了 MATLAB 自带的 `fspecial` 函数来创建高斯核,`imfilter` 函数来进行滤波操作。注意,`'replicate'` 表示在边界处进行复制填充。
相关问题
高斯滤波器matlab
高斯滤波器是一种常用的图像滤波器,用于平滑图像并减少噪声。在MATLAB中,可以使用函数`imgaussfilt`来实现高斯滤波。
下面是一个示例代码,演示如何在MATLAB中应用高斯滤波器:
```matlab
% 读取图像
image = imread('image.jpg');
% 将图像转换为灰度图像
grayImage = rgb2gray(image);
% 定义高斯滤波器的标准差
sigma = 2;
% 应用高斯滤波器
filteredImage = imgaussfilt(grayImage, sigma);
% 显示原始图像和滤波后的图像
subplot(1, 2, 1);
imshow(grayImage);
title('原始图像');
subplot(1, 2, 2);
imshow(filteredImage);
title('滤波后的图像');
```
在这个示例中,我们首先读取了一个彩色图像,并将其转换为灰度图像。然后,定义了高斯滤波器的标准差 `sigma`。最后,使用`imgaussfilt`函数将高斯滤波器应用到灰度图像上,并显示原始图像和滤波后的图像。
请注意,你需要将`image.jpg`替换为你自己的图像文件路径。此外,你可以根据需要调整`sigma`的值来改变滤波效果。
高斯脉冲成型滤波器MATLAB代码
高斯脉冲成型滤波器(Gaussian Pulse Shaping Filter)是在数字通信中常用的一种滤波器,用于将数字信号进行调制时,进行符号间的串扰控制。下面是MATLAB代码实现高斯脉冲成型滤波器:
```matlab
%% 高斯脉冲成型滤波器
% 采样率
Fs = 50e3;
% 符号率
Rs = 10e3;
% 采样周期
Ts = 1 / Fs;
% 符号间隔
Tb = 1 / Rs;
% 高斯脉冲参数
beta = 0.3;
% 高斯脉冲时间范围
t = -5*Tb:Ts:5*Tb;
% 高斯脉冲成型滤波器
h = (1 / (sqrt(2*pi)*beta*Tb)) * exp(-(t/Tb).^2/(2*beta^2));
% 频率范围
f = linspace(-Fs/2, Fs/2, length(t));
% 频域响应
H = fftshift(fft(h));
% 绘制高斯脉冲成型滤波器时域和频域响应
figure();
subplot(211);
plot(t, h);
xlabel('时间 (秒)');
ylabel('幅度');
title('高斯脉冲成型滤波器时域响应');
subplot(212);
plot(f, abs(H));
xlim([-10e3, 10e3]);
xlabel('频率 (Hz)');
ylabel('幅度');
title('高斯脉冲成型滤波器频域响应');
```
以上代码中,高斯脉冲参数 `beta` 的取值通常在 0.3~0.5 之间,可以根据实际应用场景进行调整。绘制结果如下图所示:
![高斯脉冲成型滤波器时域和频域响应](https://img-blog.csdn.net/20180325154506242)
阅读全文