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

采样定理的可视化

  • 一、APP Designer 介绍
  • 二、 时域抽样定理可视化界面搭建
    • 2.1 时域抽样定理原理
    • 2.2核心代码实现
    • 2.3界面设计与操作

全部代码: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 设计工具还提供了仪表、指示灯、旋钮和开关等控件,帮助您复现仪表面板的外观和操作。您还可以使用选项卡、面板和网格布局等容器组件组织用户界面。

基于MATLAB中APP Designer的采样定理的可视化_第1张图片

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

2.1 时域抽样定理原理

基于MATLAB中APP Designer的采样定理的可视化_第2张图片
上式说明采样后的信号频谱是采样之前信号频谱以整数倍采样频率的平移然后叠加形成的。式(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设计工具设计交互界面,并将代码内嵌于界面中,最终设计结果如下图所示。
基于MATLAB中APP Designer的采样定理的可视化_第3张图片首先通过最左边的原始信号信息模块调整生成信号的频率,并点击生成信号即可得到原始信号图像:
基于MATLAB中APP Designer的采样定理的可视化_第4张图片然后选择采样频率,并点击生成信号即可获得采样信号的时域图像和频域图像:
基于MATLAB中APP Designer的采样定理的可视化_第5张图片
最后点击恢复原始信号按钮,即可得到富源信号的示意图,并将其与原始情况示意图进行对比,即可得到最终结论,是否复原成功。
基于MATLAB中APP Designer的采样定理的可视化_第6张图片以上就是基于Matlab设计的采样定理可视化平台。

你可能感兴趣的:(可视化,matlab)