通信系统仿真

崔春雷

目录

  • 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绘图系列之基本绘图


一、目录

1.区域图

2.填充图

二维填充图

三维填充图

3.条形图

二维条形图

三维条形图

4.直方图

笛卡儿坐标系下的直方图

极坐标系下得直方图

5.圆体图

圆柱体

球体

椭圆体

6.饼图

二维饼图

三维饼图

7.排列图

8.离散图形

二维柄状图

三维柄状图

阶梯图

9.散点图

二维散点图

多边形区域内的散点

三维散点图

散点图矩阵

10.轮廓图

二维轮廓图

填充轮廓线

三维轮廓图

11.向量图

罗盘图

羽状图

箭头图

法线图

12.多边形面积图

二、图形示例

1.区域图

MATLAB程序如下:

Y=[1,5,3;

3,2,7;

1,5,3;

2,6,1];

area(Y)

grid on

set(gca,'Layer','top')

title('Stacked Area Plot')




pic 1




2.填充图

二维填充图

MATLAB程序如下:

t=(1/16:1/8:1)'*2*pi;%八边形顶点

x1=sin(t);

y1=cos(t);

t=(0:1/10:1)'*2*pi;%十边形顶点

x2=2+sin(t);

y2=cos(t);

fill(x1,y1,'y',x2,y2,'w')

title('二维填充图示例')

axis equal

axis off

text(-0.75,0,'\fontname{隶书}\fontsize{32}八边形')

text(1.25,0,'\fontname{隶书}\fontsize{32}十边形')




pic 2




三维填充图

MATLAB程序如下:

X=[0 1 1 2;1 1 2 2;0 0 1 1];%创建四个三角形

Y=[1 1 1 1;1 0 1 0;0 0 0 0];

Z=[1 1 1 1;1 0 1 0;0 0 0 0];

C=[0.5 1 1 0.5;

1 0.5 0.5 0.1667;

0.333 0.333 0.5 0.5];%色彩着色

fill3(X,Y,Z,C)

title('三维填充图')




pic 3




3.条形图

二维条形图

MATLAB程序如下:

Y=round(rand(5,3)*10);%随机函数产生5×3的数组,对产生的数据取整

subplot(2,2,1)

bar(Y,'group')

title('Group')

subplot(2,2,2)

bar(Y,'stack')%堆型二维垂直条形图

title('Stack')

subplot(2,2,3)

barh(Y,'stack')%堆型二维水平条形图

title('Stack')

subplot(2,2,4)

bar(Y,1.5)%设定条形的宽度为1.5

title('Width=1.5')




pic 4



三维条形图

MATLAB程序如下:

Y=[1 2 3 4 5 6 7;

1 2 3 4 3 2 1;

7 6 5 4 3 2 1];

subplot(2,3,1)

bar3(Y,'detached')

title('Detached')

subplot(2,3,4)

bar3(Y,0.25,'detached')

title('Width=0.25')

subplot(2,3,2)

bar3(Y,'grouped')

title('Grouped')

subplot(2,3,5)

bar3(Y,0.5,'grouped')

title('Width=0.5')

subplot(2,3,3)

bar3(Y,'stacked')

title('Stacked')

subplot(2,3,6)

bar3h(Y,0.3,'stacked')

title('Width=0.3')




pic 5




4.直方图

笛卡儿坐标系下的直方图

MATLAB程序如下:

x=-2.9:0.1:2.9;

y=randn(1000,1)

hist(y,x)

title('笛卡儿坐标系下的直方图')




pic 6



极坐标系下的直方图

MATLAB程序如下:

theta = 2*pi*rand(1,100);

rose(theta)

title('极坐标系下的直方图')




pic 7




5.圆体图

圆柱体

MATLAB程序如下:

t=0:pi/10:2*pi;

[x,y,z]=cylinder(2+cos(t),100);

surf(x,y,z)

axis square

title('圆柱形图示例')




pic 8



球体

MATLAB程序如下:

sphere

axis equal




pic 9



椭圆体

MATLAB程序如下:

[x y z]=ellipsoid(1,2,3,5,1,10);

view(3)

surface(x,y,z)

title('椭圆体:中心点(1,2,3),半径(5,1,10)')




pic 10



6.饼图

二维饼图

MATLAB程序如下:

x=[1 3 0.5 2.5 2];

subplot(221);

pie(x)%绘制饼图

subplot(222)

explode=[0 1 0 0 0];

pie(x,explode)%加上分离的切片

subplot(223)

label={'一班' '二班' '三班' '四班' '五班'};

pie(x,label);%给每个切片加上标注

subplot(224);

pie(x,explode,label);%具有分离和自定义标注的功能




pic 11



三维饼图

x=[5 10 7 8 1.3];

explode=[0 1 0 0 0];

pie3(x,explode)

title('三维饼图')




pic 12




7.排列图

MATLAB程序如下:

Y=[1 2 5 3.3 0.9 5.2];

names={'一队' '二队' '三队' '四队' '五队' '六队'};

X=[1 2 3 4 5 6];

subplot(211)

pareto(Y,names)%x轴的下标标识为names

title('排列图示例一')

subplot(212)

pareto(Y,X)

title('排列图示例二')%x轴下标有x指定




pic 13




8.离散图形

二维柄状图

MATLAB程序如下:

y=linspace(0,2*pi,10)

stem(cos(y),'fill','-.')%对离散图的末端进行了填充

title('二维柄状图示例');




pic 14




三维柄状图

MATLAB程序如下:

X=linspace(0,2*pi,50);

Y=X./2;

Z=sin(X)+cos(Y);

stem3(sin(X),cos(Y),Z,'fill')

xlabel('sin(X)');

ylabel('cos(Y)');

zlabel('sin(X)+cos(Y)');

title('三维柄状图示例');




pic 15



阶梯图

MATLAB程序如下:

x=0:.25:10;

subplot(211)

stairs(x,sin(x))

title('stairs函数应用示例')

subplot(212)

[xb,yb]=stairs(x,sin(x));%返回plot函数的两个参数

plot(xb,yb)

title('plot函数实现stairs函数应用示例')




pic 16



9.散点图

二维散点图

MATLAB程序如下:

x=rand(1,100)*100;%绘制图标的x,y轴的坐标

y=rand(1,100)*100;

s=rand(1,100)*100;%绘制图标的大小

c=rand(1,100)*255;%绘制图标的颜色

subplot(2,1,1)

scatter(x,y);%绘制具有默认大小与颜色的二维散点图

title('二维散点图指令scatter(x,y)');

subplot(2,1,2)

scatter(x,y,s,c);%绘制由参数s、c定义的二维散点图

title('二维散点图指令scatter(x,y,s,c)');




pic 17



多边形区域内的散点

L=linspace(0,2.*pi,6);

xv=cos(L)';

yv=sin(L)';

xv=[xv;xv(1)];

yv=[yv;yv(1)];%设定多边形

x=randn(250,1);

y=randn(250,1);%设定散点

in=inpolygon(x,y,xv,yv);%判断散点与多边形关系值

plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'bo')

axis equal




pic 18




三维散点图

MATLAB程序如下:

[x,y,z]=sphere(16);%获取球体的坐标

X=x(:);

Y=y(:);

Z=z(:);%矩阵的转换

S=floor((abs(Z)+1)*50);

C=floor(abs(Z)*255);%定义图标大小和颜色与球体的纬度有关

scatter3(X,Y,Z,S,C,'filled')%绘制三维散点图,填充图标

title('三维散点图:球体示例')




pic 19



散点图矩阵

MATLAB程序如下:

x=randn(50,3);

y=x*[-1 2 1;2 0 1;1 -2 3];%定义绘制矩阵值

plotmatrix(y,'*b')

title('绘制3×3散点图矩阵')




pic 20



10.轮廓图

二维轮廓图

MATLAB程序如下:

[X,Y]=meshgrid(-2:.2:2,-2:.2:3);%表面网格函数

Z=X.*exp(-X.^2-Y.^2);

[C,h]=contour(X,Y,Z,10);%绘制轮廓线

clabel(C,h)%对轮廓线进行标注

title('二维轮廓图示例')




pic 21



填充轮廓线

MATLAB程序如下:

Z=peaks;

[C,h]=contourf(Z,10);%绘制二维轮廓线,并且填充

caxis([-20 20])%伪色彩,设置轴参数CLim和CLimMode

clabel(C,h)%标注轮廓线

title('Filled Contour Plot Using')




pic 22



三维轮廓图

MATLAB程序如下:

[X,Y]=meshgrid([-2:.25:2]);

Z=X.*exp(-X.^2-Y.^2);

[C,h]=contour3(X,Y,Z,30);%绘制三维轮廓图

grid off

%clabel(C,h)

title('三维轮廓图示例')




pic 23



11.向量图

罗盘图

MATLAB程序如下:

X=[0 30 90 45 145 270 330 225 150];

Y=[5 9 3 10 6 3 2.6 8 7.4];

X=X*pi/180;

[X,Y]=pol2cart(X,Y);%极坐标转化为直角坐标

compass(X,Y);

title('罗盘图示例')




pic 24




羽状图

theta=(-90:10:90)*pi/180;

r=2*ones(size(theta));

[u,v]=pol2cart(theta,r);

feather(u,v);

title('羽状图示例')




pic 25




箭头图

二维箭头图

MATLAB程序如下:

[X,Y]=meshgrid(-2:.2:2);

Z=X.*exp(-X.^2-Y.^2);

[DX,DY]=gradient(Z,.2,.2);%计算梯度,.2是DX方向距离

contour(X,Y,Z)

hold on

quiver(X,Y,DX,DY)

grid off

hold off

title('二维箭头图示例')




pic 26




三维箭头图

MATLAB程序如下:

[X,Y]=meshgrid(-2:0.25:2,-1:0.2:1);

Z=X.*exp(-X.^2-Y.^2);

[U,V,W]=surfnorm(X,Y,Z);%返回三维表面图的法线

quiver3(X,Y,Z,U,V,W,0.5);

hold on

surf(X,Y,Z);

axis([-2 2 -1 1 -.6 .6])

hold off

title('三维箭头图示例')




pic 27




法线图

MATLAB程序如下:

[x y z]=peaks(20);

surfnorm(x,y,z);




pic 28



12.多边形面积图

MATLAB程序如下:

L=Linspace(0,2.*pi,6);

xv=cos(L)';

yv=sin(L)';

xv=[xv;xv(1)];

yv=[yv;yv(1)];

A=polyarea(xv,yv);

plot(xv,yv);

title(['Area=' num2str(A)]);

axis image




pic 29



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


Matlab中set-gca函数的使用



Matlab坐标修改gca 

 1、 坐标轴删除  

set(gca,’xtick’,[]) %去掉x轴的刻度 
set(gca,’ytick’,[]) %去掉y轴的刻度  
set(gca,’xtick’,[],’ytick’,[]) %同时去掉x轴和y轴的刻度 




2、 Matlab中“坐标轴刻度”的不同风格 

set(gca,’xtick’,[]) %去掉x轴的刻度 
set(gca,’ytick’,[]) %去掉y轴的刻度  
set(gca,’xtick’,[],’ytick’,[]) %同时去掉x轴和y轴的刻度 

另附上Matlab坐标调整程序一段: 



x=20:10:20000; 
y=rand(size(x)); 
semilogx(x,y); 
set(gca,’XLim’,[20 20000]);

            就是设置当前图的横轴和纵轴的范围,lim就是limite的意思。
            也可以不用set设置,而直接用函数xlim和ylim设置
            xlim(gca,[-20,20]);
            ylim(gca,[-20,20]);
            也可以用函数axis设置
            axis(gca,[-20,20,-20,20])

            gca是get hanlde to current axis(得到当前图的句柄),除set函数外在以上函数中均可省略不写,默认就是gca。


set(gca,’XMinorTick’,’off’);          %关闭精准坐标刻度
set(gca,’XTick’,[20 31.5 63 125 250 500 1000 2000 4000 8000 16000]); 
set(gca,’XGrid’,’on’);                  %绘制X轴垂直网格线
set(gca,’XMinorGrid’,’off’); 


3、 Matlab坐标轴刻度调整

subplot(3,2,1) 

plot(x) 

title('默认格式')  


subplot(3,2,2)

plot(x) 

set(gca,'xtick',[1 3 6 8]);

set(gca,'ytick',[]); 

title('x自定义间隔,y关闭')  


subplot(3,2,3) 

plot(x)  

set(gca,'xtick',[1 3 6 8]); 

set(gca,'xticklabel',sprintf('.4f|',get(gca,'xtick'))) 

set(gca,'ytick',[2 4 5 7]); 

set(gca,'yticklabel',{'Two','Four','Five','Seven'}); 

title('x、y自定义间隔、精度及显示方式')  


subplot(3,2,4) 

plot(x) 

set(gca,'xminortick','on');%style 5 

set(gca,'ticklength',[0.05 0.025]); 

set(gca,'tickdir','out'); 

title('x、y坐标刻度显示方式')   


subplot(3,2,5)

plot(x) 

set(gca,'xtick',[min(x) (max(x)+min(x))/2 max(x)]); 

set(gca,'ytick',[min(x) (max(x)+min(x))/2 max(x)]); 

title('论文中常用的标准3点式显示')  

x=20:10:20000; y=rand(size(x)); 


subplot(3,2,6) 

semilogx(x,y);

set(gca,'XLim',[20 20000]); 

set(gca,'XMinorTick','off'); 


set(gca,'XTick',[20 31.5 63 125 250 500 1000 2000 4000 8000 16000]); 

set(gca,'XGrid','on');

set(gca,'XMinorGrid','off'); 

title('自定义网格显示') 


 %顺便附上可以格式化坐标刻度的程序段 

x=get(gca,'xlim'); 

y=get(gca,'ylim'); 

set(gca,'xtick',[x(1) (x(1)+x(2))/2 x(2)]);

set(gca,'ytick',[y(1) (y(1)+y(2))/2 y(2)]); 

------------- 

get(gca,'xlim');是获取最大最小刻度的 



 如果需要获取所有在坐标轴上显示的刻度,需要使用get(gca,'ytick') 


Axes对象的属性
(1)title('new','color','r');给坐标轴命名为new,红色
title({'this title','has 2 '});命名为两行的标题
(2)Units:有效值为pixels/normalized/inches /centimeters/points/characters
决定各种位置属性的度量单位,相对于窗口左下角为基准。当设置为Pixels时, 以像素为单位;当设置为normalized时,以坐标为单位,屏幕的左下角为[0,0],右上角为[1.0,1.0]。
(3)grid on:在图像中显示网格。
(4)children:控制axes对象的子对象,即image\light\line\patch \rectangle\surface和text等对象,可通过get(gca,'children')来返回当前坐标轴的子对象构成的句柄值向量。
(5) 字体属性:
Fontangle字体角度(正常normal或斜体italic/oblique)
Fontname字体名称
fontsize 字体大小(单位由Fontunits决定)
fontunits字体单位(points/normalized/inches /centimeters/pixels)
fontweight字体粗细(normal/bold/light/demi)
gridlinestyle 决定坐标轴网格线的样式,‘-’为实线‘- -’为虚线‘:’为点线‘-.’为点虚线
plot(1:10);grid on;set(gca,'gridlinestyle','-.');将当前坐标轴显示的网格线为点-虚线
(6)linewidth 定义X,Y和Z轴的轴线宽度(以点单位定义)
(7)NextPlot:有效值为add|replace|replacechildren,默认为 replace
add表示使用当前的坐标轴,把新的图形对象加到此坐标轴中是一般保留的做法,replace表示重新设置坐标轴的所有属性 (Position除外),也就是在绘图前会删除当前坐标轴和它的子对象。replacechildren表示移除当前坐标轴中所有子对象,但不重新设置 坐标轴的所有属性
(8)Outerposition决定坐标轴外边界的位置。由位置向量[left,bottom,width,height]组 成,其中left,bottom表示相对于绘图窗口左下角的位置,width,height表示区域尺寸,默认为[0 0 1 1]
(9)Position 由位置向量[left,bottom,width,height]组成,决定坐标轴位置
(10)Tag定义本坐标轴的卷展栏,因为每一个对象都有 自己唯一的识别码即tag,以方便findobj函数查找坐标轴句柄值。
(11)visible决定坐标轴是否可见
(12)set(gca,'xgrid','on') 绘制X轴垂直网格线
set(gca,'gridlinestyle',':','linewidth',3)设置网格线线条类型和宽度
set(gca,'box','on') 将图轴方框绘制出来
(13)set(gca,'xscale','linear');将X轴刻度设为线性
set(gca,'yscale','log'); 将Y轴刻度设为对数
(14)disp()显示一个数组,但不显示其数组名称