【重新定义matlab强大系列六】利用matlab进行一维滤波or二维滤波

news2024/11/28 0:50:42

🔗 运行环境:matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 14 日,左手の明天的第 282 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


目录

filter:1 维数字滤波器

(1)语法

y = filter(b,a,x) 

y = filter(b,a,x,zi) 

y = filter(b,a,x,zi,dim) 

(2)示例

移动平均滤波器

对矩阵行进行滤波

对各部分中的数据进行滤波

filter2:二维数字滤波器

(1)语法

(2)示例

二维台座


 

filter:1 维数字滤波器

(1)语法

y = filter(b,a,x) 

使用由分子和分母系数 b 和 a 定义的 对输入数据 x 进行滤波。

如果 a(1) 不等于 1,则 filter 按 a(1) 对滤波器系数进行归一化。因此,a(1) 必须是非零值。

  • 如果 x 为向量,则 filter 将滤波后数据以大小与 x 相同的向量形式返回。

  • 如果 x 为矩阵,则 filter 沿着第一维度操作并返回每列的滤波后的数据。

  • 如果 x 为多维数组,则 filter 沿大小不等于 1 的第一个数组维度进行计算。

y = filter(b,a,x,zi) 

将初始条件 zi 用于滤波器延迟。zi 的长度必须等于 max(length(a),length(b))-1

y = filter(b,a,x,zi,dim) 

沿维度 dim 进行计算。例如,如果 x 为矩阵,则 filter(b,a,x,zi,2) 返回每行滤波后的数据。

(2)示例

移动平均滤波器

移动平均滤波器是用于对含噪数据进行平滑处理的常用方法。使用 filter 函数计算沿数据向量的平均值。

创建一个由正弦曲线数据组成的 1×100 行向量,其中的正弦曲线被随机干扰所损坏。

t = linspace(-pi,pi,100);
rng default  %initialize random number generator
x = sin(t) + 0.25*rand(size(t));

移动平均值滤波器沿数据移动长度为 windowSize 的窗口,并计算每个窗口中包含的数据的平均值。以下差分方程定义向量 x 的移动平均值滤波器:

 窗口大小为 5 时,计算有理传递函数的分子和分母系数。

windowSize = 5; 
b = (1/windowSize)*ones(1,windowSize);
a = 1;

求数据的移动平均值,并绘制其对原始数据的图。

y = filter(b,a,x);

plot(t,x)
hold on
plot(t,y)
legend('Input Data','Filtered Data')

对矩阵行进行滤波

使用以下有理传递函数对数据的矩阵进行滤波。

创建一个由随机输入数据组成的 2×15 矩阵。

rng default  %initialize random number generator
x = rand(2,15);

定义有理传递函数的分子和分母系数。

b = 1;
a = [1 -0.2];

沿着 x 的第二维度应用传递函数并返回每行的一维数字滤波结果。绘制原始数据的第一行对已滤波数据的图。

y = filter(b,a,x,[],2);

t = 0:length(x)-1;  %index vector

plot(t,x(1,:))
hold on
plot(t,y(1,:))
legend('Input Data','Filtered Data')
title('First Row')

绘制输入数据的第二行对已滤波数据的图。

figure
plot(t,x(2,:))
hold on
plot(t,y(2,:))
legend('Input Data','Filtered Data')
title('Second Row')

对各部分中的数据进行滤波

使用滤波器延迟的初始条件和最终条件对各部分中的数据进行滤波,尤其是需要考虑内存限制时请执行此操作。

生成一个大型的随机数据序列并将其拆分为两段:x1 和 x2

x = randn(10000,1);

x1 = x(1:5000);
x2 = x(5001:end);

整个序列 x 是 x1 和 x2 的垂直串联。

定义有理传递函数的分子和分母系数,

b = [2,3];
a = [1,0.2];

对子序列 x1 和 x2 进行滤波,一次一个。输出对 x1 进行滤波的最终条件,以便在第一段末尾存储滤波器的内部状态。

[y1,zf] = filter(b,a,x1);

将对 x1 进行滤波的最终条件用作对第二段也就是 x2 进行滤波的初始条件。

y2 = filter(b,a,x2,zf);

y1 是来自 x1 的滤波后的数据,而 y2 是来自 x2 的滤波

y = filter(b,a,x);

isequal(y,[y1;y2])
ans = logical
   1

后的数据。整个滤波后的序列是 y1 和 y2 的垂直串联。

同时对整个序列进行滤波以供比较。


filter2:二维数字滤波器

(1)语法

Y = filter2(H,X) 根据矩阵 H 中的系数,对数据矩阵 X 应用有限脉冲响应滤波器。

Y = filter2(H,X,shape ) 根据 shape 返回滤波数据的子区。例如,Y = filter2(H,X,'valid') 仅返回计算的没有补零边缘的滤波数据。

(2)示例

二维台座

使用与 conv2 函数紧密相关的 filter2 函数对图像和其他二维数据进行数字滤波。

创建并绘制一个内部高度等于 1 的二维台座。

A = zeros(10);
A(3:7,3:7) = ones(5);
mesh(A)

根据滤波器系数矩阵 H 对 A 中的数据进行滤波,并返回已滤波数据的满矩阵。

H = [1 2 1; 0 0 0; -1 -2 -1];
Y = filter2(H,A,'full');
mesh(Y)

将 H 旋转 180 度,并将结果与 A 进行卷积。该输出等同于按照 H 中的系数对 A 中的数据进行滤波。

C = conv2(A,rot90(H,2));
mesh(C)

filter2 函数通过取输入 X 的二维卷积和旋转 180 度的系数矩阵 H 对数据进行滤波。具体而言,就是 filter2(H,X,shape) 等同于 conv2(X,rot90(H,2),shape)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/524613.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NVM —— 你把我玩明白

前期回顾 纯前端 根据目录解析word,拆分不同段落_彩色之外的博客-CSDN博客纯前端 解析 wordhttps://blog.csdn.net/m0_57904695/article/details/130503211?spm1001.2014.3001.5501 👍 本文专栏:开发技巧 目录 🍺 下载 及 配置镜像 …

如何设计测试用例以及常用的黑盒测试方法

目录 如何设计测试用例? 设计测试用例的万能公式 ①功能测试 (用户的基本功能需求) ②性能测试 ③易用性(考虑用户体验)测试 ④兼容性测试 ⑤界面(UI,外观)测试 ⑥安全测试 常用黑盒测试方法 …

MySQL_4 常见函数汇总及演示

目录 一、统计函数 1.基本语法 : 2.代码演示 : 演示Ⅰ—— 演示Ⅱ—— 二、合计函数 1.基本语法 : 2.代码演示 : 三、平均函数 1.基本语法 : 2.代码演示 : 四、最值函数 1.基本语法 : 2.代码演示 : 五、字符串函数 1.常用字符串函数 : 2.代码演示 : 六、数学…

Linux基础学习---6、系统定时任务、软件包管理、虚拟机克隆

1、系统定时任务 1.1 crontab 服务管理 1、重新启动crond服务1.2 crontab 定时任务设置 1、基本语法crontab [选项] 2、选项说明选项功能-e编辑crontab定时任务-l查询crontab任务-r删除当前用户所有的crontab任务 3、参数说明 (1)进入crontab编辑页面…

SpringSecurity 快速入门

1. 认证授权概述 1.1 认证授权概念 1.1.1 认证 在互联网中,我们每天都会使用到各种各样的APP和网站,在使用过程中通常还会遇到需要注册登录的情况,输入你的用户名和密码才能正常使用,也就是说成为这个应用的合法身份才可以访问…

项目开发工具【EditorConfig,Prettier,ESLint,Git Husky,Commitizen,Commitlint】

项目开发工具【六款】 前言 六款插件让你项目更加的规范✨✨✨ EditorConfig:为不同编辑器上处理同一项目的多个开发人员维护一致的编码风格Prettier:一款强大的代码格式化工具,是当下前端最流行的代码格式化工具ESLint:查找潜在…

图像增强库albumentations(v1.3.0, 2023.5)中所有图像增强方法记录(class)

整体概要 变换类型具体类模糊/噪声AdvancedBlur*,Blur*,Downscale*,Defocus*,GlassBlur*,GaussianBlur*,GaussNoise*,ImageCompression*,ISONoise*,MultiplicativeNoise…

MySQL基础-SQL介绍

本文介绍MySQL中SQL通用语法,包括:DDL,DML,DQL,DCL 文章目录 SQL分类DDL(数据定义语言)数据库操作表操作 DML(数据操作语言)添加数据更新和删除数据 DQL基础查询条件查询…

Linux sed流编辑器

sed流编辑器 sed是一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。 sed 的工作流程主要包括读取…

智能的本质人工智能与机器人领域的64个大问题阅读笔记(二)

目录 如果一个人不能理解所说语言的全部信息,那么说这种语言也是没有意义的。 “20年内,机器将能够胜任人类承担的所有工作”(赫伯特西蒙, 1965)。 以及21世纪的人类愿意相信超智能机器时代的到来,与前几…

项目中大批量数据查询导致OOM

项目中有时候一次性将大批量数据都查出来到内存中导致内存占用过多很可能会导致内存溢出 问题复现 搭建一个本地项目。需求描述:查询表call_task中待拨打的数据进行拨打,call_task中一次可能会有大批量数据需要处理。本次准备了1万条数据。 /*** 查询…

【Java校招面试】基础知识(九)——Redis

目录 前言一、基础概念二、Redis持久化三、Redis分布式存储后记 前言 本篇主要介绍Redis数据库的相关内容。 “基础知识”是本专栏的第一个部分,本篇博文是第九篇博文,如有需要,可: 点击这里,返回本专栏的索引文章点…

(c语言实现)数据结构链表oj题(2)

前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

HTML第二天

第二天 表格 表格的主要作用 1.表格主要用于显示、展示数据,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理2.表格不是用来…

Java基础知识:1,DOS命令

1,盘名称 加 : 进入该盘目录下 例如:e: 进入e盘 2,dir 查看当前路径下文件和文件夹 3,md 文件夹名字 》 创建文件夹(md后要加空格) (md make directory) 4,c…

Oracle11g下载与安装

一、Oracle11g下载 官网下载地址:Oracle Database 11g Release 2 for Microsoft Windows (x64) 选择"Accept License Agreement",点击"win64_11gR2_database_1of2.zip"和"win64_11gR2_database_2of2.zip",进行…

Debian11之 K3s 部署K8S集群

K3S 架构方案 Server 节点指的是运行 k3s server 命令的主机,control plane 和数据存储组件由 K3s 管理Agent 节点指的是运行 k3s agent 命令的主机,不具有任何数据存储或 control plane 组件Server 和 Agent 都运行 kubelet、容器运行时和 CNI 基于 …

GPUAnimation的Mesh动画烘焙到贴图,学习笔记

0.动画烘焙贴图工具作者 Unity-GPU Animation - 知乎 1.安装学习项目 GitHub - striter/Unity3D-ToolChain_StriteR 复制到URP项目中,并删掉多余报错的和GPUAnimation无关的模块 2.把学习项目中的HLSL搬到低版本Unity的CG版本 安装FBX Exporter把烘焙好的mesh导…

【秒杀系统】高并发编程入门学习

文章目录 一、秒杀系统的基本构成二、秒杀系统的常见问题三、秒杀系统的解决技术 一、秒杀系统的基本构成 二、秒杀系统的常见问题 高并发 大量的请求进来,在Redis缓存层会发生缓存雪崩 缓存击穿 缓存穿透这些问题,这些问题就会打挂MySQL。这样就会导致…

23种设计模式之建造者模式(Builder Pattern)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将23种设计模式中的建造者模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…