当前位置: 首页 > ai >正文

MATLAB滤波工具箱演示——自定义维度、滤波方法的例程演示与绘图、数据输出

在这里插入图片描述

使用 M A T L A B MATLAB MATLAB的界面做了一个 M A T L A B MATLAB MATLAB滤波工具箱 d e m o demo demo,本文章给出演示:自定义维度、滤波方法的例程演示与绘图、数据输出

文章目录

  • 编辑界面
  • 使用方法
  • 优势
  • 待改进点
  • 部分代码

编辑界面

使用 M A T L A B MATLAB MATLAB A p p App App设计,代码原创,编辑界面如下:
在这里插入图片描述

使用方法

  1. 选择滤波方法
    在这里插入图片描述

  2. 编辑滤波维度

在这里插入图片描述

  1. 运行程序

在这里插入图片描述
4. 查看结果

在这里插入图片描述

优势

  • 可视化界面
  • 维度可调

待改进点

  • 状态噪声协方差Q、观测噪声协方差R等现在是固定的,后面会改成可输入的
  • 状态方程和观测方程现在也是固定的,后面考虑修改成多种形式可选

部分代码

classdef app1 < matlab.apps.AppBase% Properties that correspond to app componentsproperties (Access = public)UIFigure             matlab.ui.FigureToolbar              matlab.ui.container.ToolbarPushTool             matlab.ui.container.toolbar.PushToolPushTool2            matlab.ui.container.toolbar.PushToolGridLayout           matlab.ui.container.GridLayoutLeftPanel            matlab.ui.container.PanelEditField            matlab.ui.control.NumericEditFieldLabel_4              matlab.ui.control.LabelSpinner_2            matlab.ui.control.SpinnerLabel_3              matlab.ui.control.LabelSpinner              matlab.ui.control.SpinnerLabel_2              matlab.ui.control.LabelKFsDropDown          matlab.ui.control.DropDownKFsDropDownLabel     matlab.ui.control.LabelButton               matlab.ui.control.ButtonRightPanel           matlab.ui.container.PanelstdTextArea_2        matlab.ui.control.TextAreastdTextArea_2Label   matlab.ui.control.LabelmeanTextArea_2       matlab.ui.control.TextAreameanTextArea_2Label  matlab.ui.control.LabelmaxTextArea_2        matlab.ui.control.TextAreamaxLabel             matlab.ui.control.LabelstdTextArea          matlab.ui.control.TextAreastdTextAreaLabel     matlab.ui.control.LabelmeanTextArea         matlab.ui.control.TextAreameanTextAreaLabel    matlab.ui.control.LabelPanel                matlab.ui.container.PanelmaxTextArea          matlab.ui.control.TextAreaLabel_5              matlab.ui.control.Labelend% Properties that correspond to apps with auto-reflowproperties (Access = private)onePanelWidth = 576;end% Callbacks that handle component eventsmethods (Access = private)% Button pushed function: Buttonfunction ButtonPushed(app, event)% generate代码main_generate;end% Callback function: not associated with a componentfunction TextAreaValueChanged(app, event)value = app.TextArea.Value;% 预览fprintf('TextAreaValueChanged函数');end% Callback function: not associated with a componentfunction TextAreaValueChanging(app, event)changingValue = event.Value;% 一旦预览代码输入东西,就运行这里代码end% Value changed function: KFsDropDownfunction KFsDropDownValueChanged(app, event)value = app.KFsDropDown.Value;% KF 后面display('已选择',value);end% Value changed function: Spinnerfunction SpinnerValueChanged(app, event)value = app.Spinner.Value;% 状态量维度end% Value changed function: Spinner_2function Spinner_2ValueChanged(app, event)value = app.Spinner_2.Value;% 观测量维度end% Callback function: not associated with a componentfunction UIAxesButtonDown(app, event)end% Value changed function: EditFieldfunction EditFieldValueChanged(app, event)value = app.EditField.Value;end% Callback function: not associated with a componentfunction UIAxesButtonDown2(app, event)
%             figure;end% Button down function: Panelfunction PanelButtonDown(app, event)end% Value changed function: maxTextAreafunction maxTextAreaValueChanged(app, event)value = app.maxTextArea.Value;end% Changes arrangement of the app based on UIFigure widthfunction updateAppLayout(app, event)currentFigureWidth = app.UIFigure.Position(3);if(currentFigureWidth <= app.onePanelWidth)% Change to a 2x1 gridapp.GridLayout.RowHeight = {480, 480};app.GridLayout.ColumnWidth = {'1x'};app.RightPanel.Layout.Row = 2;app.RightPanel.Layout.Column = 1;else% Change to a 1x2 gridapp.GridLayout.RowHeight = {'1x'};app.GridLayout.ColumnWidth = {220, '1x'};app.RightPanel.Layout.Row = 1;app.RightPanel.Layout.Column = 2;endendend% Component initializationmethods (Access = private)% Create UIFigure and componentsfunction createComponents(app)% Create UIFigure and hide until all components are createdapp.UIFigure = uifigure('Visible', 'off');app.UIFigure.AutoResizeChildren = 'off';app.UIFigure.Position = [100 100 640 480];app.UIFigure.Name = 'MATLAB App';app.UIFigure.SizeChangedFcn = createCallbackFcn(app, @updateAppLayout, true);% Create Toolbarapp.Toolbar = uitoolbar(app.UIFigure);% Create PushToolapp.PushTool = uipushtool(app.Toolbar);% Create PushTool2app.PushTool2 = uipushtool(app.Toolbar);% Create GridLayoutapp.GridLayout = uigridlayout(app.UIFigure);app.GridLayout.ColumnWidth = {220, '1x'};app.GridLayout.RowHeight = {'1x'};app.GridLayout.ColumnSpacing = 0;app.GridLayout.RowSpacing = 0;app.GridLayout.Padding = [0 0 0 0];app.GridLayout.Scrollable = 'on';% Create LeftPanelapp.LeftPanel = uipanel(app.GridLayout);app.LeftPanel.Layout.Row = 1;app.LeftPanel.Layout.Column = 1;% Create Buttonapp.Button = uibutton(app.LeftPanel, 'push');app.Button.ButtonPushedFcn = createCallbackFcn(app, @ButtonPushed, true);app.Button.Position = [107 43 100 23];app.Button.Text = '生成代码与结果';% Create KFsDropDownLabelapp.KFsDropDownLabel = uilabel(app.LeftPanel);app.KFsDropDownLabel.Position = [34 381 26 22];app.KFsDropDownLabel.Text = 'KFs';% Create KFsDropDownapp.KFsDropDown = uidropdown(app.LeftPanel);app.KFsDropDown.Items = {'EKF', 'UKF', 'CKF', 'PF'};app.KFsDropDown.ValueChangedFcn = createCallbackFcn(app, @KFsDropDownValueChanged, true);app.KFsDropDown.Position = [108 381 93 22];app.KFsDropDown.Value = 'EKF';% Create Label_2app.Label_2 = uilabel(app.LeftPanel);app.Label_2.HorizontalAlignment = 'right';app.Label_2.Position = [21 329 65 22];app.Label_2.Text = '状态量维度';% Create Spinnerapp.Spinner = uispinner(app.LeftPanel);app.Spinner.Limits = [1 Inf];app.Spinner.ValueChangedFcn = createCallbackFcn(app, @SpinnerValueChanged, true);app.Spinner.Position = [101 329 100 22];app.Spinner.Value = 1;% Create Label_3app.Label_3 = uilabel(app.LeftPanel);app.Label_3.HorizontalAlignment = 'right';app.Label_3.Position = [22 246 65 22];app.Label_3.Text = '观测量维度';% Create Spinner_2app.Spinner_2 = uispinner(app.LeftPanel);app.Spinner_2.Limits = [1 Inf];app.Spinner_2.ValueChangedFcn = createCallbackFcn(app, @Spinner_2ValueChanged, true);app.Spinner_2.Position = [101 246 100 22];app.Spinner_2.Value = 1;% Create Label_4app.Label_4 = uilabel(app.LeftPanel);app.Label_4.HorizontalAlignment = 'right';app.Label_4.Position = [33 434 53 22];app.Label_4.Text = '运行时间';% Create EditFieldapp.EditField = uieditfield(app.LeftPanel, 'numeric');app.EditField.ValueChangedFcn = createCallbackFcn(app, @EditFieldValueChanged, true);app.EditField.Position = [101 434 100 22];app.EditField.Value = 1000;% Create RightPanelapp.RightPanel = uipanel(app.GridLayout);app.RightPanel.Layout.Row = 1;app.RightPanel.Layout.Column = 2;% Create Label_5app.Label_5 = uilabel(app.RightPanel);app.Label_5.HorizontalAlignment = 'right';app.Label_5.Position = [9 134 136 22];app.Label_5.Text = '未滤波时,第一维,max';% Create maxTextAreaapp.maxTextArea = uitextarea(app.RightPanel);app.maxTextArea.ValueChangedFcn = createCallbackFcn(app, @maxTextAreaValueChanged, true);app.maxTextArea.Position = [154 133 64 23];% Create Panelapp.Panel = uipanel(app.RightPanel);app.Panel.AutoResizeChildren = 'off';app.Panel.Title = 'Panel';app.Panel.ButtonDownFcn = createCallbackFcn(app, @PanelButtonDown, true);app.Panel.Position = [9 190 392 277];% Create meanTextAreaLabelapp.meanTextAreaLabel = uilabel(app.RightPanel);app.meanTextAreaLabel.HorizontalAlignment = 'right';app.meanTextAreaLabel.Position = [217 134 33 22];app.meanTextAreaLabel.Text = 'mean';% Create meanTextAreaapp.meanTextArea = uitextarea(app.RightPanel);app.meanTextArea.Position = [259 133 65 23];% Create stdTextAreaLabelapp.stdTextAreaLabel = uilabel(app.RightPanel);app.stdTextAreaLabel.HorizontalAlignment = 'right';app.stdTextAreaLabel.Position = [316 134 40 22];app.stdTextAreaLabel.Text = 'std:';% Create stdTextAreaapp.stdTextArea = uitextarea(app.RightPanel);app.stdTextArea.Position = [348 133 62 23];% Create maxLabelapp.maxLabel = uilabel(app.RightPanel);app.maxLabel.HorizontalAlignment = 'right';app.maxLabel.Position = [21 111 124 22];app.maxLabel.Text = '滤波后,第一维,max';% Create maxTextArea_2app.maxTextArea_2 = uitextarea(app.RightPanel);app.maxTextArea_2.Position = [154 110 64 23];% Create meanTextArea_2Labelapp.meanTextArea_2Label = uilabel(app.RightPanel);app.meanTextArea_2Label.HorizontalAlignment = 'right';app.meanTextArea_2Label.Position = [217 111 33 22];app.meanTextArea_2Label.Text = 'mean';% Create meanTextArea_2app.meanTextArea_2 = uitextarea(app.RightPanel);app.meanTextArea_2.Position = [259 110 65 23];% Create stdTextArea_2Labelapp.stdTextArea_2Label = uilabel(app.RightPanel);app.stdTextArea_2Label.HorizontalAlignment = 'right';app.stdTextArea_2Label.Position = [316 111 40 22];app.stdTextArea_2Label.Text = 'std:';% Create stdTextArea_2app.stdTextArea_2 = uitextarea(app.RightPanel);app.stdTextArea_2.Position = [348 110 62 23];% Show the figure after all components are createdapp.UIFigure.Visible = 'on';endend% App creation and deletionmethods (Access = public)% Construct appfunction app = app1% Create UIFigure and componentscreateComponents(app)% Register the app with App DesignerregisterApp(app, app.UIFigure)if nargout == 0clear appendend% Code that executes before app deletionfunction delete(app)% Delete UIFigure when app is deleteddelete(app.UIFigure)endend
end

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

http://www.xdnf.cn/news/3506.html

相关文章:

  • 详细说明StandardCopyOption.REPLACE_EXISTING参数的作用和使用方法
  • 虚幻引擎 IK Retargeter 编辑器界面解析
  • 上位机知识篇---PSRAM和RAM
  • 从零开始讲DDR(9)——AXI 接口MIG 使用(2)
  • n8n 键盘快捷键和控制键
  • 基于YOLOV5的目标检测识别
  • Expected SARSA算法详解:python 从零实现
  • 输入输出(python)
  • BBR 之 ProbeRTT 新改
  • DeepSeek-R1模型蒸馏
  • SALOME源码分析: ParaVis
  • C++11新特性_标准库_线程库_std::thread
  • 【Bootstrap V4系列】学习入门教程之 表格(Tables)和画像(Figure)
  • STM32复盘总结——芯片简介
  • 动态规划算法精解(Java实现):从入门到精通
  • Zephyr RTOS架构下的固件升级
  • MySQL数据库上篇
  • CPU:AMD的线程撕裂者(Threadripper)系列
  • 高等数学-第七版-下册 选做记录 习题10-1
  • Python爬虫实战:获取易车网最新特定车型销量数据并分析,为消费者购车做参考
  • 快速集成 Flutter Shorebird 热更新
  • Qt 中基于 QTableView + QSqlTableModel 的分页搜索与数据管理实现
  • 仙盟创梦IDE-智能编程,编程自动备份+编程审计
  • AI 驱动的智能交通系统:从拥堵到流畅的未来出行
  • uc系统中常用命令、标准C库函数和系统调用
  • 从实列中学习linux shell9 如何确认 服务器反应迟钝是因为cpu还是 硬盘io 到底是那个程序引起的。cpu负载多高算高
  • yolov5 本地训练
  • 从读写分离到分布式服务:系统架构演进十阶段深度解析
  • 实验二 软件白盒测试
  • 对第三方软件开展安全测评,如何保障其安全使用?