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

news2024/10/30 15:19:27

文章目录

  • 前言
  • 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.运行展示

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

结语

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

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

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

相关文章

WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、运行效果2、主菜单与界面实现1、主菜单2、霓虹灯字界面实现3、字体资源获取3、控件封装1.创建自定义控件2、依赖属性实现3、封装控件使用4、运行效果4、源代码获取1、运行效果 2、主菜单与界面实…

OpenCV视觉分析之目标跟踪(6)轻量级目标跟踪器类TrackerNano的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Nano 跟踪器是一个超轻量级的基于深度神经网络&#xff08;DNN&#xff09;的通用目标跟踪器。 由于特殊的模型结构&#xff0c;Nano 跟踪器速度…

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

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

RISC0 Boundless:可验证计算层

1. 引言 区块链技术&#xff1a; 是解决双花问题的革命性解决方案&#xff0c;无需中介即可在数字交易中建立信任。 然而&#xff0c;区块链技术要求所有参与者重新执行所有数据以达成共识。虽然这种方法解决了关键问题&#xff0c;但也带来了可扩展性挑战&#xff0c;限制了…

移远通信闪耀2024香港秋灯展,以丰富的Matter产品及方案推动智能家居产业发展

10月27-30日&#xff0c;2024香港国际秋季灯饰展在香港会议展览中心盛大开展。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信再次亮相&#xff0c;并重点展示了旗下支持Matter协议以及亚马逊ACK ( Alexa Connect Kit ) SDK for Matter方案的Wi-Fi模组、低功耗蓝…

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

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

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统是一个非常强大的组合。以下是一个详细的步骤指南&#xff0c;帮助你构建这样一个系统。 硬件准备 Intel RealSense深度相机&#xff1a;例如D415、D435或L515。计算平台&#xff1a;一台具有足够计算能力的计算机&…

“前端兼容——CSS篇”(进阶版)

“前端兼容——CSS篇”&#xff08;进阶版&#xff09; 上一篇文章写了css 兼容问题处理的基础篇 点击这里基础篇—传送门&#xff0c;这里想给粉丝分享一下css 更深一点的兼容场景&#xff0c;和处理方案 文章目录 “前端兼容——CSS篇”&#xff08;进阶版&#xff09;进阶CS…

【GIT】Visual Studio 中 Git 界面中, 重置 和 还原

在 Visual Studio 的 Git 界面中&#xff0c;“重置” 和 “还原” 是两个常用的 Git 操作。它们的主要区别在于应用场景和影响范围。 1. 重置&#xff08;Reset&#xff09; 重置用于更改当前分支的提交历史&#xff0c;通常用于撤销或删除某些提交。重置操作可能会更改 Git…

leetcode - 684. 冗余连接

684. 冗余连接 解决思路 大致上的思路就是将元素加入到 并查集 中&#xff0c;那么在遍历到边的时候先去判断的边的两个端点的 根节点 是否相等&#xff0c;如果相等&#xff0c;那么就代表此刻把这条边加上去就形成了环【可以这么理解&#xff0c;如果形成了环&#xff0c;那…

汽车IVI中控OS Linux driver开发实操(二十六):i.MX图形库

概述: 下表列出了整个GPU系列,在i.MX 6板上,只有6Quad和6QuadPlus支持OpenCL。表中还显示了OpenCL的关键性能指标GFLOPS的理论数量。一些基准测试,如Clpeak,可用于验证它。 i.MX G2D API G2D应用程序编程接口(API)设计为易于理解和使用2DBit blit(BLT)功能。它允许用…

自适应阻抗案例分析(上)

案例分析一 Duchaine,V.,Gosselin,C.(2009).Safe,stable and intuitive control for physical human-robot interaction.In IEEE international conference on robotics and automation,2009.ICRA09(pp.3383-3388).IEEE. 主要贡献 1.利用外力反馈调整阻尼系数&#xff0c;同…

sql进阶篇

1.更新记录 AC&#xff1a; update examination_info set tag replace(tag, "PYTHON", "Python") where tag "PYTHON";2.删除记录 AC&#xff1a; DELETE FROM exam_record WHERE timestampdiff(minute, start_time, submit_time) < 5AND…

RustRover加载Rust项目报错

问题描述&#xff1a; 昨天还可以正常使用的RustRover今天打开Rust项目一直报错&#xff1a; warning: spurious network error (3 tries remaining): [7] Couldnt connect to server (Failed to connect to 127.0.0.1 port 51342 after 105750 ms: Couldnt connect to server…

Vue 权限管理

vue 中&#xff0c;比较常见的需要进行权限管控的权限控制实现思路有四条&#xff1a;、 菜单的控制 在登录请求中&#xff0c;会得到权限数据&#xff0c;当然&#xff0c;这个需要后端返回数据的支持&#xff0c;前端根据权限数据&#xff0c;展示对应的菜单&#xff0c;单…

三十二、2024年交通管理专业知识测试题

你还在为自己的学习发愁吗?你还在为你还在为自己面对枯燥无味的教科书、一层层叠叠的试卷复习而发呆吗?如何提高的学习兴趣,如何摆脱枯燥乏味的书本和试卷,采用一种全新的方式去努力复习功课、增进知识呢,如何激自己的学习热情,接触更广阔的知识面,争取在期末考试中考出…

国际版同城服务同城信息任务发布平台系统小程序源码

国际版同城服务同城信息任务发布平台系统&#x1f30d;&#x1f4e2;&#xff1a;连接世界的每一个角落 &#x1f310; 开篇&#xff1a;跨越国界的同城服务 在这个全球化的时代&#xff0c;我们不再局限于自己的城市&#xff0c;而是渴望与世界每一个角落建立联系。为了满足…

Docker 命令指南:详细概述与示例应用

Docker 命令指南&#xff1a;详细概述与示例应用 Docker 是一个强大的容器化平台&#xff0c;为容器的创建、管理和运行提供了广泛的支持。通过 Docker 的命令行工具&#xff0c;用户可以从基本的镜像管理、容器操作到复杂的网络和数据存储管理执行各种任务。本节将详细介绍 D…

【问题记录】解决VMware虚拟机中鼠标侧键无法使用的问题

前言 有项目需要在Linux系统中开发&#xff0c;因为要测试Linux中相关功能&#xff0c;要用到shell&#xff0c;在Windows中开发太麻烦了&#xff0c;因此我选择使用UbuntuXfce4桌面来开发&#xff0c;这里我用到了Linux版本的IDEA&#xff0c;除了快捷键经常和系统快捷键冲突…

【vue3|第29期】Vue3中的插槽:实现灵活的组件内容分发

日期&#xff1a;2024年10月24日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉在这里插入代码片得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不…