基于matlab的线性卷积演示系统

文章目录

  • 前言
  • 1. 卷积的简单介绍
    • 1.1 翻褶
    • 1.2 移位
    • 1.3 相乘
    • 1.4相加
    • 1.5 整体的运行效果展示
  • 2.App Designer的介绍
  • 3.具体的开发步骤
    • 3.1 声明成员变量
    • 3.2 设计基本布局
    • 3.3 编写回调函数
  • 4.运行展示
  • 结语

前言

本篇文章按照如下要求,完成线性卷积演示系统
(1)用matlab完成线性卷积的计算过程,并绘图;
(2)使用GUI/app design设计一个线性卷积的基本演示系统;要求两个卷积信号的参数可以自由给定;设计框图中直接包含“计算按钮”,直接计算卷积结果;
(3) 分析卷积计算结果。

1. 卷积的简单介绍

卷积包括四个步骤,翻褶移位相乘相加四个步骤,下面是对具体步骤的演示

1.1 翻褶

首先,我们定义了一个x=[1 2 3 4 5]的一个向量,通过fliplr()函数将序列进行翻褶得到 [5 4 3 2 1]

在这里插入图片描述
在实际中,我们需要对下标也进行翻褶,如图所示

stem(0:length(x)-1,x,"filled")
stem(-(length(x)-1):0,fliplr(x),"filled")

运行结果:
原序列:
在这里插入图片描述

翻褶后的序列:
在这里插入图片描述
当然也可以画在一个figure

1.2 移位

翻褶过后根据n值进行移位。
n<0,向左移位;n>0,向右移位
具体移位效果需要根据另一个序列的起始下标和翻褶后的下标共同来决定
这里制作效果展示,具体代码运行不做解释,因为本项目直接使用conv()函数求卷积结果
在这里插入图片描述

1.3 相乘

x(m)*h(n-m)

1.4相加

将每次的n值相乘的结果进行累加

1.5 整体的运行效果展示

这里只是为了更好的解释卷积过程
在这里插入图片描述

2.App Designer的介绍

App Designer 是 MATLAB 中用于创建图形用户界面(GUI)应用程序的一个集成开发环境(IDE),它提供了一种直观且高效的方式来设计、开发和部署具有交互功能的 MATLAB 应用程序。
本项目使用App Designer进行可视化,具体的使用方法不做介绍

3.具体的开发步骤

3.1 声明成员变量

min1,min2:表示序列的起始下标
max1, max2:表示序列的终止下标
y1, y2:表示两个参与卷积的序列

properties (Access = private)
        Property % Description
        min1,min2,max1,max2,y1,y2;
    end

3.2 设计基本布局

直接从组件库将需要的进行拖拽即可
在这里插入图片描述

3.3 编写回调函数

本项目的回调函数编写在下拉框中,即在下拉框中选择函数过后即可在相应坐标轴上显示,当然在此之前需要对参数赋初值,不过我们也实现了一定的交互性,会出现报错提示窗
在这里插入图片描述
回调函数:

        function xDropDownValueChanged(app, event)
            value = app.xDropDown.Value;
            a=app.aEditField.Value;
            b=app.bEditField.Value;
            x=-2:5;
            app.min1=-2;
            app.max1=5;
            % value
            if isempty(a)||isempty(b)
                errordlg("请先输入参数!!!");
                return;
            end
            switch value
                case "正弦型序列y=a*sin(b*x)"
                    app.y1=a*sin(b*x);
                case "指数衰减函数y=a*exp(-b*t)"
                    app.y1=a*exp(-b*x);
                case "无"
                    errordlg("请选择函数","错误提示窗口");
                    return;
            end 
            stem(app.UIAxes,x,app.y1,"filled","r");
        end

此时,就能在app.UIAxes坐标中画出y1序列,起始坐标为-2:5
同理在另一个下拉文本框中编写回调函数

function xDropDown_2ValueChanged(app, event)
            value = app.xDropDown_2.Value;
            % value = app.xDropDown.Value;
            a=app.aEditField_2.Value;
            b=app.bEditField_2.Value;
            if isempty(a)||isempty(b)
                errordlg("请先输入参数!!!");
                return;
            end
            switch value
                case "矩形门:a,b分别表示上下界"
                    x=a:b;
                    app.min2=a;
                    app.max2=b;
                    if a>b
                        errordlg("a应当小于b","错误提示窗");
                        return;
                    end
                    app.y2=ones(b-a+1,1);
                case "高斯门:y=exp(-(x-a).^2/b)"
                    x=0:1:7;
                    app.min2=0;
                    app.max2=7;
                    app.y2 = exp(-(x - a).^2 / (b * b));
                case "无"
                    errordlg("请选择函数","错误提示窗口");
                    return;
            end 
            stem(app.UIAxes_2,x,app.y2,"filled","b");
        end

此时,就能在app.UIAxes_2坐标中画出y2序列,起始坐标为0:7(选择高斯门函数),起始坐标为a:b(选择门函数)

卷积结果(编写在计算按钮的回调函数中):

function ButtonPushed(app, event)
            % app.y1
            % app.y2
            if isempty(app.y1) || isempty(app.y2)
                errordlg("请选择合适的函数!");
                return;
            end
            h=conv(app.y1,app.y2);
            n=app.min1+app.min2:1:app.max1+app.max2;
            stem(app.UIAxes_3,n,h,"filled");
            msgbox("绘制完成","help");
        end

4.运行展示

展示了运行的结果,以及一定的交互性在这里插入图片描述

结语

本篇博客中的代码资源已上传至个人资源中,有需要自行获取,也可以关注私聊我获取。同时本篇博客可能内容有些内容理解有些错误,欢迎批评指正!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DICOM标准:深入详解DICOM数据模型,理解DICOM数据模型

目录 引言 ​编辑 DICOM数据模型概述 ​编辑 DICOM数据模型示例 DICOM对象的概念 1. 图像对象&#xff08;Image Object&#xff09; 2. 序列&#xff08;Sequence&#xff09; 3. 系列&#xff08;Series&#xff09; 4. 研究&#xff08;Study&#xff09; 5. 患者…

DICOM标准:DICOM服务类详解,了解存储服务类、查询/检索服务类(Q/R Service Class)和工作流管理服务类等原理

目录 一、概述 二、存储服务类&#xff08;Storage Service Class&#xff09; 存储操作&#xff08;C-STORE&#xff09; 确认操作&#xff08;C-STORE-RSP&#xff09; 三、查询/检索服务类&#xff08;Query/Retrieve Service Class&#xff09; 查询操作&#xff08;C…

ChangeCLIP环境配置

看到有个现成的dockerfile&#xff0c;先试试 ok首先需要root权限的用户 才能用docker&#xff0c;其次要外网&#xff0c;要不然有些东西好像下载不了 &#xff08;失败&#xff09; 那就直接配吧 我看12服务器上有个openmmlab的环境&#xff0c;先基于这个环境吧 # 用lx账…

Xcode文件默认存储位置-使用c++file保存文件默认路径以及设置为路径为当前项目路径

Xcode文件默认存储位置-使用cfile保存文件默认路径以及设置为路径为当前项目路径 1.概述 使用Xcode工具开发时候&#xff0c;遇到C调用file创建文件后&#xff0c;在当前项目中找不到文件路径。这是由于xcode会将文件保存到默认设置的路径。下面是查看文件默认存储路径和修改…

宠物空气净化器哪个牌子好?双十一铲屎官们有什么推荐吗?

最近换季&#xff0c;我家猫掉毛实在太严重了&#xff0c;加上风大&#xff0c;把浮毛吹的哪里都是。浮毛接触到鼻子后&#xff0c;我经常鼻痒难受&#xff0c;去了医院才知道&#xff0c;已经是鼻炎的前兆了。为了解决浮毛问题&#xff0c;我也寻找了很多方法。 还是看了宠物博…

智慧用电监控装置:引领0.4kV安全用电新时代

在智能科技日新月异的今天&#xff0c;电力安全与管理正迎来一场前所未有的革新。为0.4kV以下TT、TN系统打造的智慧用电在线监控装置不仅重新定义了电力监控的边界&#xff0c;更为建筑安全用电筑起了一道坚不可摧的防线。 装置集成了单、三相交流电精确测量、四象限电能计量、…

C++ 二叉树进阶:相关习题解析

目录 1. 二叉树创建字符串。 2. 二叉树的分层遍历1 3. 二叉树的分层遍历2 4. 二叉树的最近公共祖先 5. 将二叉搜索树转换为排序的双向链表 6. 从前序与中序遍历序列构造二叉树 7. 从中序与后序遍历序列构造二叉树 8. 二叉树的前序遍历&#xff0c;非递归迭代实现 9.…

【AIGC】AI工作流workflow实践:构建日报

workflow实践 引言实现步骤分析实践创建 dify workflow 应用创建工作流内部节点1、设置输入字段2、创建两个LLM节点3、设置结束节点 运行工作流 结语 引言 工作流 workflow 是现在 LLM 很重要的一个概念&#xff0c;因为对于一个模型来说&#xff0c;非常复杂的问题很难一次性…

计算机视觉-对极几何

1 基本概念 对极几何&#xff08;Epipolar Geometry&#xff09;描述的是两幅视图之间的内在射影关系&#xff0c;与外部场景无关&#xff0c;只依赖于摄像机内参数和这两幅视图之间的相对位姿 两视图的对极几何可以理解为图像平面与以基线为轴的平面束相交的几何关系&#xf…

jjycheng字符签名

jjycheng字符签名--字符 jjjj jjjj hhhhhhh j::::j j::::j h:::::h …

AI大模型开发架构设计(14)——基于LangChain大模型的案例架构实战

文章目录 基于LangChain大模型的案例架构实战1 LangChain 顶层架构设计以及关键技术剖析LangChain 是什么?LangChain的主要功能是什么&#xff1f;LangChain 顶层架构设计LangChain 典型使用场景&#xff1a;QA 问答系统LangChain 顶层架构设计之 Model I/OLangChain 顶层架构…

Ubuntu下安装和配置MySQL5.7教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 在ubuntu下安装MySQL数据库 查看操作系统版本 ​编辑 添加 MySQL APT 源 访问下载页面并下载发布包 安装发布包 安装MySQL 查看MySQL状态 开启自启动 登…

设计模式4-工厂模式策略模式

目录 一 工厂模式 1.1 思想 1.2 案例 1.2.1 接口 1.2.2 实现类 1.2.3 工厂类 1.2.4 调用 二 策略模式 2.1 思想 2.2 案例 2.2.1 接口 2.2.2 实现类 2.2.3 策略类 2.2.4 调用 三 工厂模式策略模式 3.1 思想 3.2 案例 3.2.1 接口 3.2.2 实现类 3.2.3 定义F…

【HTML】之form表单元素详解

HTML表单是网页与用户交互的关键组成部分&#xff0c;它允许用户输入数据并将数据提交到服务器进行处理。本文将全面详细地介绍HTML表单的各个方面&#xff0c;从基础元素到高级用法&#xff0c;并提供丰富的代码示例和中文注释&#xff0c;帮助你彻底掌握表单的使用。 1. 表单…

shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘

查找美国安全局漏洞 nww.nsa.gov&#xff08;美国安全局官方网站) net参数使用 搜索指定的ip网段 shodan search --limit 10 --fields ip_str,port net:208.88.84.0/24 (老美国家安全局的一个网段)可能直接访问不太行&#xff0c;可以使用host参数&#xff0c;得到域名再去…

【Unity基础】初识UI Toolkit - 编辑器UI

&#xff08;本文所需图片在文章上面的资源中&#xff0c;点击“立即下载”。&#xff09; 本文介绍了如何通过UI工具包&#xff08;UI Toolkit&#xff09;来创建一个编辑器UI。 一、创建项目 1. 打开Unity创建一个空项目&#xff08;任意模板&#xff09;&#xff0c;这里我…

NVR小程序接入平台/设备EasyNVR多个NVR同时管理多平台级联与上下级对接的高效应用

政务数据共享平台的建设正致力于消除“信息孤岛”现象&#xff0c;打破“数据烟囱”&#xff0c;实现国家、省、市及区县数据的全面对接与共享。省市平台的“级联对接”工作由多级平台共同构成&#xff0c;旨在满足跨部门、跨层级及跨省数据共享的需求&#xff0c;推动数据流通…

Android 获取OAID

获取OAID 老规矩&#xff0c;直接上&#xff1a; implementation com.huawei.hms:opendevice:6.11.0.300 // 要获取华为vaid 和aaid&#xff0c;还需添加opendevice 依赖implementation(name: oaid_sdk_2.5.0, ext: aar) import android.content.Context; import android.util.…

Flume采集Kafka数据到Hive

版本&#xff1a; Kafka&#xff1a;2.4.1 Flume&#xff1a;1.9.0 Hive&#xff1a;3.1.0 Kafka主题准备&#xff1a; Hive表准备&#xff1a;确保hive表为&#xff1a;分区分桶、orc存储、开启事务 Flume准备&#xff1a; 配置flume文件&#xff1a; /opt/datasophon/flume-1…

还在担心你收藏的书签下架或失效?试试这款自托管书签管理器『Linkwarden』吧!

还在担心你收藏的书签下架或失效&#xff1f;试试这款自托管书签管理器『Linkwarden』吧&#xff01; 哈喽&#xff0c;小伙伴儿们好&#xff0c;我是Stark-C~ 随着大家在网上收藏的浏览器书签越来越多&#xff0c;难免会导致管理混乱的问题。可能会在我们需要的时候难以找到…