基于MATLAB中APP Designer的采样定理的可视化


全部代码:https://download.csdn.net/download/weixin_45858061/20814175?spm=1001.2014.3001.5503

一、APP Designer 介绍

  • App 设计工具是交互式开发环境,用于设计 App 布局并对其行为进行编程。它提供 MATLAB® 编辑器的完整集成版本和大量交互式 UI 组件。它还提供网格布局管理器来组织用户界面,并提供自动调整布局选项来使您的 App 检测和响应屏幕大小的变化。它允许您通过直接从 App 设计工具工具条将 App 打包为安装程序文件中来分发 App,或通过创建独立的桌面 App 或 Web App 来分发 App(需要MATLAB Compiler™)。

App 设计工具集成了 App 构建的两大任务:图形用户界面 (GUI) 可视化组件布局,以及 App 行为编程。要在 MATLAB 中构建 App,App 设计工具是十分理想的环境。如果已在 GUIDE 中构建 App,则可以使用 GUIDE to App Designer Migration Tool for MATLAB 将现有的 GUIDE App 迁移到 App 设计工具中。同时 GUIDE 将在未来版本中移除。
设计用户界面中可将可视化组件拖放到设计画布,然后根据对齐提示实现精确布局。App 设计工具自动生成面向对象的代码,用于指定 App 的布局和设计。
还可以使用集成的 MATLAB 编辑器来定义 App 的行为。App 设计工具可以使用代码分析器自动检查代码问题。您可以在编写代码时查看关于代码的警告和错误消息,并根据这些消息修改您的 App。您还可以使用 Stateflow® 图对 App 行为建模。
构建 App 时,您可以使用按钮、复选框、树和下拉列表等标准组件。App 设计工具还提供了仪表、指示灯、旋钮和开关等控件,帮助您复现仪表面板的外观和操作。您还可以使用选项卡、面板和网格布局等容器组件组织用户界面。

 APP Designer

二、 时域抽样定理可视化界面搭建

2.1 时域抽样定理原理

时域抽样定理原理
上式说明采样后的信号频谱是采样之前信号频谱以整数倍采样频率的平移然后叠加形成的。式(2.7)用 于离散时间信号的傅立叶变换的计算。A是连续的模拟频率,Q=2πf。

2.2核心代码实现

原始信号生成:

% 原始信号生成按钮
        function ButtonPushed(app, event)
            app.HZEditField.Value=app.HZKnob.Value;
            a1=app.HZKnob.Value;
            t = -0.2 : 0.0005 : 0.2;
            N = 1000;
            k = -N : N;
            W = k * 2000 / N;
            origin = sin(2 * pi * a1 * t) + cos(2 * pi * 25 * t) + sin(2 * pi * 30 * t);% ???????????
            origin_F = origin * exp(-1i * t' * W) * 0.0005;% ?????
            origin_F = abs(origin_F);% ???
            plot(app.UIAxes,t,origin)
            plot(app.UIAxes_2,W,origin_F)
        end

采样信号生成:

% 采样信号生成按钮
        function Button_2Pushed(app, event)
            app.HZEditField_2.Value=app.HZKnob_2.Value;
            a1=app.HZKnob.Value;
            a2=app.HZKnob_2.Value;
            N = 1000;
            k = -N : N;
            W = k * 2000 / N;
            Nsampling = 1/a2; % ????
            t = -0.2 : Nsampling : 0.2;
            f_80Hz = sin(2 * pi * a1 * t) + cos(2 * pi * 25 * t) + sin(2 * pi * 30 * t); %??????
            F_80Hz = f_80Hz * exp(-1i * t' * W) * Nsampling; % ?????????
            F_80Hz = abs(F_80Hz);
            stem(app.UIAxes_3,t, f_80Hz)
            plot(app.UIAxes_4, W,F_80Hz)
        end

采样信号恢复原始信号:

 function Button_3Pushed(app, event)
            n = -100 : 100;
            a1=app.HZKnob.Value;
            a2=app.HZKnob_2.Value;
            a3=a1*2;
            Nsampling = 1/a2;
            n_sam = n * Nsampling;
            f_uncovery = sin(2 * pi * a1 * n_sam) + cos(2 * pi * 25 * n_sam) + sin(2 * pi * 30 * n_sam);
            t = -0.2 : 0.0005 : 0.2;
            f_covery = f_uncovery * sinc((1/Nsampling) * (ones(length(n_sam), 1) * t - n_sam' * ones(1, length(t))));
            plot(app.UIAxes_5, t,f_covery); 
            if(a2>=a3) 
                app.EditField.Value=('符合奈奎斯特采样定理,信号可以复原');
            else
                app.EditField.Value=('不符合奈奎斯特采样定理,信号无法复原');
            end
        end
    end

2.3界面设计与操作

根据上文编写的生成信号代码,通过APP设计工具设计交互界面,并将代码内嵌于界面中,最终设计结果如下图所示。
01首先通过最左边的原始信号信息模块调整生成信号的频率,并点击生成信号即可得到原始信号图像:
02然后选择采样频率,并点击生成信号即可获得采样信号的时域图像和频域图像:
03
最后点击恢复原始信号按钮,即可得到富源信号的示意图,并将其与原始情况示意图进行对比,即可得到最终结论,是否复原成功。
04以上就是基于Matlab设计的采样定理可视化平台。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值