通信系统仿真

崔春雷

目录

  • 1 第一单元: MATLAB基础
    • 1.1 课程说明与资料
      • 1.1.1 作业参考答案
      • 1.1.2 移动22级作业答案
    • 1.2 MATLAB安装与运行环境
      • 1.2.1 MATLAB介绍
    • 1.3 基本数据类型:数值类型
    • 1.4 基本数据类型:字符类型
    • 1.5 数据类型转换与输出
    • 1.6 数组与矩阵基础
      • 1.6.1 矩阵运算进阶
    • 1.7 数组与矩阵常用函数
    • 1.8 matlab中的逻辑运算
    • 1.9 实验: MATLAB常用数学函数
      • 1.9.1 实验 作业答案
    • 1.10 元胞数组
    • 1.11 结构体数组
      • 1.11.1 结构体进阶
      • 1.11.2 元胞数组与结构体数组对比
      • 1.11.3 map 容器
    • 1.12 附录:MATLAB常用基础命令
    • 1.13 拓展内容:实时脚本
      • 1.13.1 实时脚本示例
    • 1.14 课程作业与答案
      • 1.14.1 《通信系统仿真》期末考试
  • 2 第二单元:Matlab 程序设计
    • 2.1 顺序结构程序
    • 2.2 分支结构—— if语句
    • 2.3 分支结构—— switch语句
    • 2.4 循环结构—— while语句
    • 2.5 循环结构—— for语句
    • 2.6 图像处理基础
    • 2.7 Matlab的函数
      • 2.7.1 函数内容的课外扩展
    • 2.8 本章实验:for循环的应用
      • 2.8.1 素数问题
        • 2.8.1.1 素数的螺旋线排列
      • 2.8.2 3X+1猜想
      • 2.8.3 7 行代码计算 π
    • 2.9 排序算法
      • 2.9.1 冒泡排序
      • 2.9.2 选择排序
      • 2.9.3 插入排序
      • 2.9.4 快速排序
      • 2.9.5 基数排序
      • 2.9.6 计数排序
      • 2.9.7 堆排序
    • 2.10 动态规划算法
      • 2.10.1 动态规划编程实例
      • 2.10.2 动态规划:01背包问题
      • 2.10.3 动态规划常见题目分析
      • 2.10.4 动态规划题目分析2
    • 2.11 常用算法简介
      • 2.11.1 剪枝算法
      • 2.11.2 二分查找
      • 2.11.3 递归算法
      • 2.11.4 回溯算法
        • 2.11.4.1 Leetcode回溯题目合集
        • 2.11.4.2 回溯算法总结
        • 2.11.4.3 回溯法解数独问题
        • 2.11.4.4 DFS与BFS
          • 2.11.4.4.1 DFS/BFS原理
          • 2.11.4.4.2 BFS的应用:Dijkstra算法
      • 2.11.5 n 皇后问题专题
      • 2.11.6 双指针算法
      • 2.11.7 数组模拟链表(约瑟夫环)
      • 2.11.8 Hash(哈希表)
      • 2.11.9 图论与路径规划
        • 2.11.9.1 迪杰斯特拉算法
        • 2.11.9.2 A*算法
          • 2.11.9.2.1 A*算法的MATLAB实现
        • 2.11.9.3 RRT路径规划算法
          • 2.11.9.3.1 RRT算法 MATLAB代码
          • 2.11.9.3.2 参考资料
      • 2.11.10 数据结构
        • 2.11.10.1 数据结构例题
      • 2.11.11 前缀和 差分 双指针
      • 2.11.12 位运算
      • 2.11.13 常用算法代码模板
    • 2.12 练习题库
    • 2.13 code
      • 2.13.1 简易计算器gui代码
      • 2.13.2 五子棋
      • 2.13.3 连连看小游戏
      • 2.13.4 递归算法与汉诺塔
      • 2.13.5 有理数的小数循环节
    • 2.14 MATLAB编程风格
      • 2.14.1 向量化编程专题
  • 3 第三单元:Matlab 图形图像处理
    • 3.1 二维图形绘图基础
    • 3.2 二维图形绘图进阶
    • 3.3 三维图形绘图
      • 3.3.1 MATLAB绘图小结
        • 3.3.1.1 用matlab绘制好看图像
    • 3.4 MATLAB高级绘图
    • 3.5 文件操作
    • 3.6 Matlab图像处理进阶
      • 3.6.1 补充:Matlab图像处理常用函数
      • 3.6.2 RGB/HSV/HSI颜色模型
      • 3.6.3 图片切换动画效果
      • 3.6.4 图像连通域标记
      • 3.6.5 图像旋转与插值
      • 3.6.6 图像的形态学
      • 3.6.7 空间滤波
        • 3.6.7.1 图像中常见的噪声类型与滤波方法
        • 3.6.7.2 matlab中的滤波函数
        • 3.6.7.3 BM3D 去噪算法
        • 3.6.7.4 双边滤波
      • 3.6.8 图像的频域处理
    • 3.7 本章总结
    • 3.8 实验 : matlab 绘图练习1
    • 3.9 实验: matlab 绘图练习2
    • 3.10 实验 :数学函数图像绘制
    • 3.11 实验:绘图综合练习
    • 3.12 实验:曲线拟合
    • 3.13 实验:牛顿法求解方程的根
    • 3.14 实验:信号的傅里叶变换
      • 3.14.1 傅里叶变换、小波变换、希尔伯特变换
      • 3.14.2 新建目录
    • 3.15 课外补充:图像处理基础1
    • 3.16 课外补充:图像处理基础2
    • 3.17 课外补充:图像处理基础3
    • 3.18 课外补充:PYTHON基础
  • 4 第五单元:MATLAB通信仿真
    • 4.1 现代通信系统的介绍
    • 4.2 模拟通信系统的仿真原理
    • 4.3 HDB3编解码的仿真实现
    • 4.4 SIMULINK和其模块简介
    • 4.5 数字通信系统的仿真原理
    • 4.6 模拟通信系统Simulink仿真
    • 4.7 数字通信系统Simulink仿真
    • 4.8 音频信号测处理与仿真
    • 4.9 图像数字水印技术
      • 4.9.1 三角函数到傅里叶变换再到语音识别与数字水印
    • 4.10 信息系统与算法
      • 4.10.1 递归算法
        • 4.10.1.1 递归与堆栈的关系
      • 4.10.2 哈希表
      • 4.10.3 双指针算法
        • 4.10.3.1 双指针算法实战
        • 4.10.3.2 双指针进阶:滑动窗口算法
      • 4.10.4 字符串匹配 KMP算法
        • 4.10.4.1 字符串匹配B-M算法
      • 4.10.5 快速傅里叶变换
      • 4.10.6 回溯算法
      • 4.10.7 动态规划
      • 4.10.8 分治算法
      • 4.10.9 Dijkstra算法
  • 5 第六单元: systemview通信仿真
    • 5.1 SystemView概述
    • 5.2 模拟通信系统 数字系统的仿真分析
    • 5.3 SystemView通信系统仿真进阶
    • 5.4 新建课程目录
  • 6 第四单元:MATLAB高级应用
    • 6.1 符号运算基础
      • 6.1.1 利用Matlab自动推导公式
    • 6.2 Matlab中的数值计算
      • 6.2.1 积分的计算
      • 6.2.2 龙格库塔:常微分方程的数值解法
      • 6.2.3 fmincon函数与非线性方程最小值
    • 6.3 统计、拟合、插值
      • 6.3.1 协方差与相关系数
    • 6.4 GUI设计初步
    • 6.5 matlab GUI界面编程
      • 6.5.1 gui实例
      • 6.5.2 gui编程中常用函数
      • 6.5.3 App Designer入门
    • 6.6 实验:GUI设计图像空间变换系统
    • 6.7 作业:利用GUI设计 计算器、信号发生器等
    • 6.8 MTALB数据导入方法
    • 6.9 课外补充:MATLAB的App会取代GUI吗?
    • 6.10 模拟退火算法matlab实现
    • 6.11 遗传算法的Matlab实现
      • 6.11.1 进化算法(Evolutionary Algorithm)及相关函数介绍
    • 6.12 粒子群算法 matlab实现
      • 6.12.1 粒子群算法及MATLAB实例仿真
    • 6.13 BP网络的应用
    • 6.14 matlab 结构体
    • 6.15 群智能算法合集
  • 7 拓展知识
    • 7.1 什么是算法的时间复杂度?
    • 7.2 Notepad++使用教程
    • 7.3 MATLAB常用函数总结
    • 7.4 MATLAB常用知识点总结
    • 7.5 MATLAB命令大全
    • 7.6 视频:MATLAB官方基础教程
    • 7.7 经典书籍:Matlab2012经典超强教程
    • 7.8 经典书籍:MATLAB揭秘(自学宝典)
    • 7.9 经典资料:MATLAB N个实用技巧
    • 7.10 Matlab编程小技巧
    • 7.11 寻优算法
      • 7.11.1 Dijkstra算法python实现
    • 7.12 PYTHON基础教程
      • 7.12.1 Python进阶
      • 7.12.2 Python小技巧
      • 7.12.3 Python总结
        • 7.12.3.1 Python循环语句总结
        • 7.12.3.2 24个顶级Python库
        • 7.12.3.3 魔法函数
      • 7.12.4 廖雪峰python
      • 7.12.5 正则表达式基础
      • 7.12.6 numpy
        • 7.12.6.1 101道Numpy习题
        • 7.12.6.2 Numpy简要语法教程
        • 7.12.6.3 Numpy实现全连接神经网络 (手写数字识别)
        • 7.12.6.4 图解NumPy
      • 7.12.7 matplotlib
        • 7.12.7.1 matplotlib练习50题
        • 7.12.7.2 Matplotlib速查表
        • 7.12.7.3 Matplotlib 实操指南
      • 7.12.8 Python3 模块 import
      • 7.12.9 Python 小项目
    • 7.13 参考资源:数据结构与算法
      • 7.13.1 十大经典排序算法总结
    • 7.14 机器学习概述
      • 7.14.1 反向传播算法
        • 7.14.1.1 反向传播的数学原理
      • 7.14.2 极大似然估计
        • 7.14.2.1 极大似然估计与最小二乘法
      • 7.14.3 Batch Normalization
        • 7.14.3.1 Batch Normalization&Dropout浅析
        • 7.14.3.2 ​BN层的梯度反向传播计算
        • 7.14.3.3 Batch Size的大小与神经网络的性能
        • 7.14.3.4 标准化和归一化
      • 7.14.4 主成分分析PCA与SVD奇异值分解
        • 7.14.4.1 岭回归 与 PCA
        • 7.14.4.2 PCA原理推导
        • 7.14.4.3 PCA原理新解
        • 7.14.4.4 svd
        • 7.14.4.5 PCA数学原理
      • 7.14.5 正则化
        • 7.14.5.1 L1、L2正则化和过拟合 总结
        • 7.14.5.2 L1 和 L2 正则化的直观解释
      • 7.14.6 SVM
        • 7.14.6.1 从零推导支持向量机(SVM)
        • 7.14.6.2 支持向量机(SVM)介绍
        • 7.14.6.3 SVM推导与实战
        • 7.14.6.4 支持向量机的直观理解
        • 7.14.6.5 浅显易懂的支持向量机SVM
      • 7.14.7 线性回归
      • 7.14.8 逻辑回归
      • 7.14.9 BP算法
        • 7.14.9.1 万能逼近——神经网络拟合任意函数原理
      • 7.14.10 激活与池化
        • 7.14.10.1 激活函数与损失函数 小结
      • 7.14.11 深度学习简述
        • 7.14.11.1 MATLAB2020深度学习实例
      • 7.14.12 损失函数与误差反向传播
        • 7.14.12.1 梯度下降与损失函数
      • 7.14.13 深度学习优化问题
      • 7.14.14 梯度下降法
        • 7.14.14.1 各类梯度下降算法的Python实现
        • 7.14.14.2 梯度下降的直观理解
        • 7.14.14.3 动量、RMSProp、Adam
      • 7.14.15 卷积的概念
        • 7.14.15.1 卷积的矩阵化算法
      • 7.14.16 局部连接
      • 7.14.17 RNN
      • 7.14.18 LSTM
      • 7.14.19 CNN-四大经典CNN技术浅析
      • 7.14.20 熵(Entropy)与交叉熵
      • 7.14.21 softmax函数详解
      • 7.14.22 自编码算法详细理解与代码实现
      • 7.14.23 pytorch
        • 7.14.23.1 ​PyTorch简介
          • 7.14.23.1.1 Pytorch快速入门资料
        • 7.14.23.2 CNN的PyTorch实现
        • 7.14.23.3 pytorch总结
        • 7.14.23.4 PyTorch trick 集锦
        • 7.14.23.5 在PyTorch上加载自定义数据集
        • 7.14.23.6 实战:Pytorch识别验证码
        • 7.14.23.7 实战:Transformer的最简洁pytorch实现
        • 7.14.23.8 使用PyTorch实现神经网络分类
      • 7.14.24 卷积神经网络CNN概述
        • 7.14.24.1 CNN 简易原理
        • 7.14.24.2 卷积神经网络CNN原理详解
        • 7.14.24.3 自己手写一个卷积神经网络
        • 7.14.24.4 CNN反向传播算法
        • 7.14.24.5 卷积计算、作用与思想
        • 7.14.24.6 用卷积神经网络CNN识别手写数字集
        • 7.14.24.7 卷积 池化 参数的计算
        • 7.14.24.8 im2col方法实现卷积算法
        • 7.14.24.9 卷积核的梯度计算
        • 7.14.24.10 卷积层反向传播推导及实现
        • 7.14.24.11 反向传输算法
          • 7.14.24.11.1 resnet残差网络
        • 7.14.24.12 CNN反向传播的MATLAB实现
      • 7.14.25 神经网络的调参技巧
      • 7.14.26 BP神经网络
        • 7.14.26.1 零开始搭建bp神经网络
        • 7.14.26.2 MATLAB自带的bp工具箱
        • 7.14.26.3 神经网络中偏置(bias)的作用
      • 7.14.27 聚类分析 k-means
        • 7.14.27.1 matlab做聚类分析(k-means)
        • 7.14.27.2 聚类模型探讨综述
        • 7.14.27.3 5种经典聚类算法
      • 7.14.28 深度学习的一些概念
      • 7.14.29 人工智能简述:AI的过去和现在
      • 7.14.30 k-NN(k近邻算法)
      • 7.14.31 神经网络中的优化器:BGD、SGD、MBGD、Momentum
      • 7.14.32 卷积神经网络的经典网络总结
        • 7.14.32.1 卷积神经网络中十大拍案叫绝的操作
      • 7.14.33 GAN 对抗样本攻击
      • 7.14.34 蒙特卡洛模拟
      • 7.14.35 dropout与随机部分连接
      • 7.14.36 Jupyter 等 IDE概览
      • 7.14.37 分类算法常用评价指标
      • 7.14.38 Inception 网络与不变性
      • 7.14.39 卷积神经网络的可视化
      • 7.14.40 隐马尔可夫模型HMM
        • 7.14.40.1 马尔科夫链
    • 7.15 MATLAB音频处理
      • 7.15.1 python处理音频信号
    • 7.16 图像处理
      • 7.16.1 图像处理中的指标
    • 7.17 代码集
    • 7.18 论文写作与阅读方法
      • 7.18.1 期刊投稿攻略
      • 7.18.2 论文排版教程
      • 7.18.3 SCI-HUB论文下载技巧
      • 7.18.4 几种论文写作神器,提高写作效率
      • 7.18.5 latex入门
      • 7.18.6 LaTeX教程
    • 7.19 机器学习常用的网站以及资源
      • 7.19.1 很详细的ML&DL学习博客
    • 7.20 SymPy 符号计算基本教程
  • 8 程序设计数学基础
    • 8.1 编程数学基础
      • 8.1.1 概率的历史
      • 8.1.2 概率
        • 8.1.2.1 常见概率分布
          • 8.1.2.1.1 二维正态分布
        • 8.1.2.2 蒙特卡罗方法
        • 8.1.2.3 置信区间
        • 8.1.2.4 协方差与相关系数
      • 8.1.3 矩阵 向量求导法则
      • 8.1.4 雅可比矩阵 海森矩阵
      • 8.1.5 矩阵的几种分解方式
      • 8.1.6 行列式和代数余子式
      • 8.1.7 向量
      • 8.1.8 矩阵的基本运算
      • 8.1.9 矩阵分析
      • 8.1.10 矩阵的LU分解
      • 8.1.11 矩阵奇异值分解(SVD)
        • 8.1.11.1 SVD分解2
        • 8.1.11.2 SVD分解逐步推导
        • 8.1.11.3 奇异值与特征值的意义
      • 8.1.12 随机向量
        • 8.1.12.1 随机过程简述
      • 8.1.13 投影矩阵和最小二乘
      • 8.1.14 知乎数学精选集
        • 8.1.14.1 高数问题集
      • 8.1.15 小波变换
      • 8.1.16 程序设计数学基础1:高等数学
      • 8.1.17 程序设计数学基础2:线性代数
      • 8.1.18 程序设计数学基础3:概率论和数理统计
      • 8.1.19 向量的距离与相似度计算
      • 8.1.20 复数
      • 8.1.21 高等数学——幂级数
      • 8.1.22 无穷小的本质
      • 8.1.23 数列极限和收敛性
      • 8.1.24 不定积分技巧总结
    • 8.2 有趣的数学题目
    • 8.3 高等数学
      • 8.3.1 泰勒级数
  • 9 路径规划与智能算法
    • 9.1 常见路径规划算法简介
    • 9.2 Dijkstra算法详细
  • 10 教学文档
    • 10.1 授课计划
    • 10.2 课程标准
拓展内容:实时脚本

                                  实时脚本


什么是实时脚本或实时函数?

MATLAB® 实时脚本和实时函数是交互式文档,它们在一个称为实时编辑器的环境中将 MATLAB 代码与格式化文本、方程和图像组合到一起。此外,实时脚本可存储输出,并将其显示在创建它的代码旁。

实时脚本和函数可用于:

直观浏览和分析问题

  • 在单个交互式环境中编写、执行和测试代码。

  • 逐个运行代码块(仅限实时脚本)或作为整个文件运行,查看结果和图形以及生成它们的对应源代码。


Live script with two outputs. Each output is displayed to the right of the code that produced it.


共享格式丰富的可执行记叙脚本

  • 添加标题和格式化文本以描述相应过程,并纳入方程、图像和超链接作为支持材料。

  • 将您的记叙脚本另存为格式丰富的可执行文档,并与同事或 MATLAB 社区共享它们,或者将其转换为 HTML、PDF、Microsoft® Word 或 LaTeX 文档以供发布。


Live script with a heading, image, descriptive text with formatted equations, and code


创建交互式教学课件

  • 将代码和结果与格式化文本和数学方程结合使用。

  • 创建分步式课件并逐步进行计算以说明教学主题。

  • 随时修改代码以回答问题或探讨相关主题。

  • 将课件作为交互式文档与学生共享或以硬拷贝形式共享,将部分完成的文件作为作业发给学生。


Live script containing a homework assignment with three exercises and text inviting the user to complete the exercises by adding code and text directly to the live script



与纯代码脚本和函数的差异

实时脚本和实时函数在几个方面与纯代码脚本和函数存在差别。此表对主要差别进行了汇总。


实时脚本和函数纯代码脚本和函数
文件格式实时代码文件格式。有关详细信息,请参阅 实时代码文件格式 (.mlx)普通文本文件格式
文件扩展名.mlx.m
输出显示在实时编辑器中,与代码一起显示(仅限实时脚本)在命令行窗口中
文本格式设置在实时编辑器中添加和查看格式化文本使用发布标记添加格式化文本,发布到视图
视觉表示


Live script with code, output, and formatted text



Plain code script showing code and green commented text


要求


  • MATLAB R2016a - MATLAB 支持 R2016a 及更高版本中的实时脚本,以及 R2018a 及更高版本中的实时函数。

  • 操作系统 - 从 R2019b 开始,在 MATLAB 支持的所有操作系统中,MATLAB 都支持实时编辑器。有关详细信息,请参阅系统要求

    对于 MATLAB 版本 R2016a 至 R2019a,MATLAB 支持的操作系统中有几个不支持实时编辑器。

    不支持的操作系统包括:


    此外,一些操作系统需要额外的配置才能在 MATLAB 版本 R2016a 到 R2019a 中运行实时编辑器。如果您无法在系统中运行实时编辑器,请联系技术支持以了解有关如何配置系统的信息。

    • Red Hat Enterprise Linux 6。

    • Red Hat Enterprise Linux 7。

    • SUSE Linux Enterprise Desktop 版本 13.0 及更早版本。

    • Debian 7.6 及更早版本。





========================================


在实时编辑器中创建实时脚本

实时脚本是在一个称为实时编辑器的交互式环境中同时包含代码、输出和格式化文本的程序文件。在实时脚本中,您可以编写代码并查看生成的输出和图形以及相应的源代码。添加格式化文本、图像、超链接和方程,以创建可与其他人共享的交互式记叙脚本。


创建实时脚本

要在实时编辑器中创建实时脚本,请转到主页选项卡并点击新建实时脚本 。您也可以在命令行窗口中使用 edit函数。例如,键入 edit penny.mlx 以打开或创建文件 penny.mlx。为确保创建实时脚本,请指定 .mlx扩展名。如果未指定扩展名,则 MATLAB® 会默认文件的扩展名为 .m,这种扩展名仅支持纯代码。

以实时脚本方式打开现有脚本

如果您已有一个脚本,可以将其以实时脚本方式在实时编辑器中打开。以实时脚本方式打开脚本会创建一个文件副本,并保持原始文件不变。MATLAB 会将原始脚本中的发布标记转换为新实时脚本中的格式化内容。

要通过编辑器将现有脚本 (.m) 以实时脚本 (.mlx) 方式打开,请右键点击文档选项卡,然后从上下文菜单中选择将 scriptName
 以实时脚本方式打开
。您还可以转至编辑器选项卡,点击保存 ,然后选择另存为。然后,将保存类型: 设置为 “MATLAB 实时代码文件 (*.mlx)” 并点击保存

注意

您必须使用所述的转换方法之一将脚本转换为实时脚本。仅使用 .mlx
扩展名重命名该脚本行不通,并可能损坏文件。

添加代码

创建实时脚本后,您可以添加并运行代码。例如,添加以下代码,以绘制随机数据向量图,并在绘图中的均值处绘制一条水平线。

n = 50;
r = rand(n,1);
plot(r)

m = mean(r);
hold on
plot([0,n],[m,m])
hold off
title('Mean of Random Uniform Data')


默认情况下,在实时编辑器中输入代码时,MATLAB 会自动补全块结尾、括号和引号。例如,键入 if,然后按 Enter 键。MATLAB 会自动添加 end 语句。

当拆分为两行时,MATLAB 还会自动补全注释、字符向量、字符串和圆括号。要退出自动补全,请按 Ctrl+Z 或撤消  按钮。默认情况下会启用自动补全。要禁用它们,请参阅编辑器/调试器自动编码预设项

添加或编辑代码时,您可以选择和编辑一个矩形区域的代码(也称为列选择块编辑)。如果要复制或删除多列数据(而不是若干行),或者要一次性编辑多行,该功能非常有用。要选择一个矩形区域,请在进行选择时按 Alt 键。

例如,选择 A 中的第二列数据。键入 0可将所有选定的值设置为 0。

运行代码

要运行代码,请点击代码左侧的斜纹竖条。也可以转到实时编辑器选项卡并点击运行。当您的程序正在运行时,系统会在编辑器窗口左上方显示一个状态指示符 。代码行左侧的灰色闪烁条指示 MATLAB 正在计算的行。要导航至 MATLAB 正在计算的行,请点击状态指示符。

如果在 MATLAB 运行程序时出错,或者 MATLAB 检测到您的代码中存在重大问题,则状态指示符会变为错误图标 。要导航至相应错误,请点击该图标。代码行右侧的错误图标  指示该错误。相应的错误消息显示为输出。

您不需要保存实时脚本即可运行它。当您确实要保存实时脚本时,MATLAB 会自动使用 .mlx
 扩展名保存它。例如,转到实时编辑器选项卡,点击  保存,然后输入名称 plotRand。MATLAB 会将实时脚本另存为 plotRand.mlx

显示输出

默认情况下,MATLAB 会在代码右侧显示输出。每个输出都会随创建它的代码行并排显示,就像在命令行窗口中一样。

您可以向左或向右拖动代码和输出之间的调整大小栏,以更改输出显示面板的大小。

要清除输出,请右键点击输出或创建输出的代码行,并选择清除输出。要清除全部输出,请右键点击脚本中的任意位置,并选择清除全部输出。或者,转到视图选项卡,并在输出部分中,点击清除全部输出按钮。

滚动时,MATLAB 会将输出与用于生成输出的代码对齐。要禁用输出与代码对齐模式,请右键点击输出部分,并选择禁用同步滚动

要使输出内嵌在代码中,请点击实时脚本右侧的  输出内嵌按钮。您也可以转到视图选项卡,然后在视图部分中点击  内嵌输出按钮。


要仅显示输出、控件和格式化文本并隐藏代码,请点击隐藏代码  按钮。要再次显示代码,请点击输出内嵌  按钮或右侧的  按钮上的输出。

要修改输出中的图窗,请使用图窗坐标区右上角或图窗工具条中的工具。您可以使用这些工具来探查图窗中的数据,并添加格式设置和注释。有关详细信息,请参阅修改实时脚本中的图窗

要分别在不同的窗口打开各个输出(例如变量和图窗),请点击输出右上角的  按钮。变量将在变量编辑器中打开,而图窗将在新图窗窗口中打开。在实时脚本之外对变量或图窗所做的更改不会应用于实时脚本中显示的输出。

=========================================


在实时脚本中运行节


将文件划分为不同节

实时脚本通常包含许多命令和文本行。您通常一次仅专注于程序中的某个部分,分块操作代码和相关文本。要更轻松地进行文档管理和导航,请将您的文件划分为多个节。代码、输出和相关文本可同时显示在单个节中。

要向实时脚本中插入分节符,请转到实时编辑器选项卡,然后在部分中点击分节符按钮。新节以蓝色突出显示,指示它处于选定状态。该节左侧的斜纹竖条指示它是旧有的。旧有节是尚未运行的节,或自上次运行后尚未修改的节。

此图像演示了实时脚本中的一个新空节。

要删除分节符,请点击紧邻其后的行的开头,然后按退格键。您也可以点击紧邻分节符的上一行末尾并按 Delete 键。

执行节

通过分别计算每个节或一次运行所有代码来运行实时脚本。要分别执行某节,该节必须包含它需要的所有值,或这些值必须存在于 MATLAB® 工作区中。节计算会运行当前选定的节(以蓝色突出显示)。如果程序文件中只有一个节,则该节不会突出显示,因为它始终处于选中状态。

此表介绍运行代码的不同方法。

操作说明
运行选定节中的代码。

点击该节左侧的蓝色竖条。


实时编辑器选项卡上的部分中,点击  运行节

运行选定节中的代码,然后移至下一节。

实时编辑器选项卡上的部分中,选择  运行并前进

运行选定节中的代码,然后运行选定节后的所有代码。

实时编辑器选项卡上的部分中,选择  运行到结束

运行文件中的所有代码。

实时编辑器选项卡上的运行部分中,点击  运行


================================================



将交互式控件添加到实时脚本

您可以将滑块、下拉列表、复选框、编辑字段和按钮添加到实时脚本,以交互方式控制变量值。当您要与其他人共享脚本时,将交互式控件添加到脚本中非常有用。通过交互式控件,可使用熟悉的用户界面组件设置和更改实时脚本中变量的值。

插入控件

要将控件插入实时脚本中,请转至实时编辑器选项卡,在代码部分中,点击控件。然后,从可用选项中进行选择。要用一个控件替换现有值,请选择该值,然后插入该控件。控件菜单仅显示对所选值可用的选项。

下表显示了可用控件的列表:

控件说明配置详细信息

数值滑块



使用数值滑块,可以通过将滑块移至所需的数值,以交互方式更改变量的值。

滑块左侧的值是其当前值。

部分中,指定最小值最大值步长值。

下拉列表



使用下拉列表,可以通过从值列表中进行选择,以交互方式更改变量的值。

将鼠标悬停在下拉列表中显示的文本上可查看其当前值。

项目部分的项目标签字段中,指定要为下拉列表中的每个项显示的文本。

项目值字段中,为下拉列表行中的每个项指定值。确保将文本值用单引号或双引号括起来,因为实时编辑器将列表中的每个项解释为代码。

复选框



使用复选框以交互方式将变量值设置为逻辑值 1 (true) 或逻辑值 0 (false)。

复选框的显示状态(选中或未选中)决定其当前值。

不适用

编辑字段




使用编辑字段以交互方式将变量值设置为指定类型的输入。

编辑字段中显示的文本和选定的数据类型决定其当前值。

类型部分的数据类型字段中,从可用选项中进行选择,以指定编辑字段中文本的数据类型。

按钮




使用按钮控件,通过点击按钮以交互方式运行代码。

使用按钮控件时,可以考虑将实时脚本中所有其他控件的运行字段设置为。这样,代码仅在用户点击按钮控件时运行。当实时脚本要求在运行代码之前设置多个控件值时,这会很有用。

要更改按钮上显示的标签,请在标签部分中输入标签名称。

修改控件执行

您可以修改当控件的值发生变化时代码运行的时间和内容。默认情况下,当控件的值发生变化时,实时编辑器会运行当前节中的代码。要配置此行为,请右键点击该控件并选择配置控件。然后,在执行部分,修改下表中所述的字段的值。按 Tab 或 Enter 键,或在控件配置菜单外部点击以返回实时脚本。

字段选项
运行位置(仅滑块控件)

选择以下选项之一来指定代码运行的时间:

  • 正在更改的值 - 在滑块值更改时运行代码。

  • 已经更改的值 - 在滑块值更改完成后运行代码(用户释放了滑块)。


运行

选择以下选项之一,以指定当控件的值更改时运行的代码:

  • 当前节 (默认值) - 运行包含控件的节。

  • 当前节以及上面已修改但尚未运行的节 - 在控件值更改时运行当前节及其上面的任何旧代码。如果实时脚本尚未运行,更改控件值将运行当前节及其之前的所有节。

  • 从当前节到结束 - 运行包含控件的节以及随后的所有节。

  • 所有节 - 运行实时脚本中的所有节。

  • 无内容 - 不运行任何代码。


提示

在实时脚本中使用按钮控件时,可以考虑将实时脚本中所有其他控件的运行字段设置为无内容。这样,代码仅在用户点击按钮控件时运行。当实时脚本要求在运行代码之前设置多个控件值时,这会很有用。



修改控件标签

您可以隐藏实时脚本中的代码,只显示带标签的控件、输出和格式化文本。在共享和导出实时脚本时,隐藏代码非常有用。要隐藏代码,请点击实时脚本右侧的隐藏代码  按钮。您也可以转至视图选项卡,在视图部分中,点击  隐藏代码。要再次显示代码,请点击输出内嵌  按钮或右侧的  按钮上的输出。

当代码隐藏时,标签显示在控件旁边。要修改控件的标签,请右键点击该控件并选择配置控件。然后,在标签部分,输入标签名称。这也是所有视图中按钮控件上显示的文本。按 Tab 或 Enter 键,或在控件配置菜单外部点击以返回实时脚本。

使用多个交互式控件创建实时脚本

以下示例说明如何使用交互式控件在 MATLAB® 中可视化患者数据并对这些数据进行研究。此示例绘制男性或女性患者的身高与体重对照图,并突出显示具有指定身高和体重的患者。

使用交互式控件指定要绘制的患者的性别以及阈值身高和体重。要查看控件并与之交互,请在浏览器或 MATLAB 中打开此示例。

load patients

thresholdHeight = 68;
thresholdWeight = 132;
selectedGender = "Female";

overThresholdWeights = Weight(Gender==selectedGender & Weight>=thresholdWeight & Height>=thresholdHeight);
overThresholdHeights = Height(Gender==selectedGender & Weight>=thresholdWeight & Height>=thresholdHeight);

sp1 = scatter(Height(Gender==selectedGender),Weight(Gender==selectedGender),'blue');
hold on

sp2 = scatter(overThresholdHeights, overThresholdWeights,'red');
hold off

title('Height vs. Weight of ' + selectedGender + ' Patients')

legendText = sprintf('Patients over %d inches and %d pounds.',thresholdHeight,thresholdWeight);
legend(sp2,legendText,'Location','southoutside')

共享实时脚本

实时脚本完成后,可与其他人共享。用户可以在 MATLAB® 中打开实时脚本,并以交互方式使用控件来进行实验。

如果您将实时脚本本身作为交互式文档共享,请考虑在共享实时脚本之前隐藏其中的代码。隐藏代码后,实时编辑器仅显示带标签的控件、输出和格式化文本。要隐藏代码,请点击实时脚本右侧的隐藏代码  按钮。您也可以转至视图选项卡,在视图部分中,点击  隐藏代码

如果您将实时脚本作为静态 PDF、Microsoft® Word、HTML 或 LaTeX 文档共享,则实时编辑器会将控件保存为代码。例如,在此处显示的实时脚本中,实时编辑器用滑块的当前值(68 和 132)替换滑块控件,并用下拉列表的当前值 ("Female") 替换下拉列表控件。


======================================

在实时编辑器中设置文本格式

您可以将格式化文本、超链接、图像和方程添加到实时脚本和函数中,以创建要与其他人共享的演示文档。

要插入新项目,请转到插入选项卡,然后从可用选项中选择:

选项描述其他详细信息

 代码

插入空的代码行。您可以在文本行之前、之后或之间插入代码行。

 分节符

插入分节符。您可以插入分节符,将实时脚本或函数分为易于管理的节,以便分别求值。节可以包括代码、文本和输出。有关详细信息,请参阅创建和运行代码节

 文本

插入空的文本行。文本行可以包含格式化文本、超链接、图像或方程。您可以在代码行之前、之后或之间插入文本行。

 目录

插入目录。

目录包含文档中所有标题的列表。如果文档只包含一个标题,则它不包含在目录中。只有目录的标题是可编辑的。

您只能在文本行中插入目录。如果您将目录插入到代码行中,MATLAB® 会将其置于当前代码节的上一行。

将包含目录的实时脚本导出为 Microsoft® Word 时,默认情况下,生成文档的目录不包含页码。要添加页码,请点击目录并选择更新表

 代码示例

插入格式化的代码示例。

代码示例是显示为缩进的等宽文本的示例代码。

  • 选择纯文本可将示例代码作为非突出显示的文本插入。

  • 选择 MATLAB 可根据 MATLAB 语法将示例代码作为突出显示的文本插入。

 图像

插入图像。

您只能在文本行中插入图像。如果您向代码行中插入图像,则 MATLAB 会将该图像置于选定代码行正下方的新文本行中。

要在插入图像后更改图像的替换文本、对齐方式和大小,请右键点击图像并从上下文菜单中选择编辑图像...

  • 替换文本 - 向编辑字段添加文本以指定图像的替换文本。

  • 对齐方式 - 从可用选项中选择,以指定图像如何与行中的其他项目对齐。

  • 大小 - 要指定相对于原始图像大小的大小,请选择相对(%),并将图像的宽度和高度指定为原始图像的一定百分比。要指定绝对大小,请选择绝对(px),并以像素为单位指定图像的宽度和高度。选择保持纵横比以在调整大小时保持纵横比。

    要恢复为原始图像大小,请右键点击图像并选择重置图像


 超链接

插入超链接。

您只能在文本行中插入超链接。如果您向代码行中插入超链接,则 MATLAB 会将该超链接置于选定代码行正下方的新文本行中。

  • 选择网页可插入指向外部网页的超链接。然后,输入网页的 URL。

  • 选择现有文档中的位置,以在单独的实时脚本或实时函数中插入指向特定位置的超链接。输入或浏览到该文件路径,然后在右侧显示的文档预览中选择一个位置。

  • 选择文档中的位置以插入指向文档中一个现有位置的超链接。出现提示时,点击文档中的所需位置以将其选为目标。您还可以使用 Alt + 向上箭头和 Alt + 向下箭头键盘快捷方式。位置可以是代码节、文本段落或标题。不支持链接到单行文本或代码。

  • 选择现有文件可插入指向文件的超链接。然后,输入文件路径。

 方程

插入方程。您只能在文本行中插入公式。如果您向代码行中插入方程,则 MATLAB 会将该方程置于选定代码行正下方的新文本行中。有关详细信息,请参阅将方程插入实时编辑器中

要设置现有文本的格式,请使用实时编辑器选项卡的文本部分中包含的各个选项:

格式类型选项
文本样式

 普通

 标题 1

 标题 2

 标题 3

 标题

文本对齐方式

 左对齐

 居中对齐

 右对齐

列表

 编号列表

 项目符号列表

标准格式设置

 加粗

 斜体

 下划线

 等宽


要将所选文本或代码全部由大写更改为小写(或者反之),请选择文本,点击鼠标右键,然后选择更改大小写。也可以按 Ctrl+Shift+A。如果文本中同时包含大写和小写文本,则 MATLAB 会将它们全部更改为大写。


更改字体

您可以在实时编辑器中调整显示的字体大小,或使用设置来更改代码和文本的字体名称、样式、大小和颜色。

要增大或减小实时编辑器中显示的字体大小,请使用 Ctrl + 加号 (+) 和 Ctrl + 减号 (-) 键盘快捷方式或按住 Ctrl 并滚动鼠标滚轮来放大或缩小。在 macOS 系统上,使用 Command 键而不是 Ctrl 键。将实时脚本导出为 PDF、Microsoft Word、HTML 或 LaTeX 时,显示字体大小的变化不会保留。

使用设置可以更改代码和文本的字体名称、样式、大小和颜色。例如,以下代码将更改实时编辑器中标题的颜色和样式:

s = settings;
s.matlab.fonts.editor.title.Style.PersonalValue = {'bold'};
s.matlab.fonts.editor.title.Color.PersonalValue = [0 0 255 1];


以下代码增大实时编辑器中普通文本的大小并更改其字体名称:

s = settings;
s.matlab.fonts.editor.normal.Size.PersonalValue = 20;
s.matlab.fonts.editor.normal.Name.PersonalValue = 'Calibri';


实时编辑器会更新所有打开的实时脚本和实时函数以显示所选字体。当您创建新的实时脚本或函数时,也会应用所选字体。

Live script with a title that is blue and bold, and a line of normal text in Calibri size 20 font



=========================================

将方程插入实时编辑器中

要描述代码中使用的数学过程或方法,请将方程插入实时脚本或函数中。只有文本行才能包含方程。如果您向代码行中插入方程,则 MATLAB® 会将该方程置于选定代码行正下方的新文本行中。

将方程插入实时脚本或函数中有两种方法。

  • 以交互方式插入方程 - 您可以通过从符号和结构体的图形显示中进行选择,从而以交互方式构建方程。

  • 插入 LaTeX 方程 - 您可以输入 LaTeX 命令,实时编辑器就会插入对应的方程。


以交互方式插入方程

要以交互方式插入方程,请执行以下操作:

  1. 转到插入选项卡,然后点击  方程

    此时将会出现一个空白方程。

  2. 方程选项卡显示的选项中选择符号、结构体和矩阵以构建方程。点击各部分右侧的  以查看其他选项。

    添加或编辑矩阵时,将会显示一个上下文菜单,您可以使用该菜单来删除和插入行与列。您也可以使用上下文菜单来更改或删除矩阵分隔符。

  3. 使用文本部分中提供的选项来设置方程格式。格式设置仅适用于方程中的文本。无法设置数值和符号的格式。除非将光标放在可设置格式的文本中,否则格式设置选项将处于禁用状态。




       具体请参考以下网址:


       https://ww2.mathworks.cn/help/matlab/matlab_prog/insert-equations.html


https://ww2.mathworks.cn/help/matlab/live-scripts-and-functions.html?s_tid=CRUX_lftnav


https://www.latex-project.org/