{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基础入门\n",
    "\n",
    "主要包括:\n",
    "\n",
    "* **希腊字母读音**\n",
    "\n",
    "* **计量经济学绪论**\n",
    "\n",
    "* **概率统计回顾**\n",
    "\n",
    "* **python 学习**\n",
    "\n",
    "* **matlab 学习**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 希腊字母读音"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| 序号 | 大写 | 小写  | 英语音标注音                     | 英文      | 汉语名称      | 常用指代意义                            |\n",
    "|:---:|:---:|:---:|:--------------------------:|:-------:|:---------:|:---------------------------------:|\n",
    "| 1  | Α  | α   | /'ælfə/                    | alpha   | 阿尔法       | 角度、系数、角加速度、第一个、电离度、转化率            |\n",
    "| 2  | Β  | β   | /'bi:tə/ 或 /'beɪtə/        | beta    | 贝塔        | 磁通系数、角度、系数                        |\n",
    "| 3  | Γ  | γ   | /'gæmə/                    | gamma   | 伽玛        | 电导系数、角度、比热容比                      |\n",
    "| 4  | Δ  | δ   | /'deltə/                   | delta   | 得尔塔       | 变化量、焓变、熵变、屈光度、一元二次方程中的判别式、化学位移    |\n",
    "| 5  | Ε  | ε   | /'epsɪlɒn/                 | epsilon | 艾普西隆      | 对数之基数、介电常数、电容率、应变                 |\n",
    "| 6  | Ζ  | ζ   | /'zi:tə/                   | zeta    | 泽塔        | 系数、方位角、阻抗、相对黏度                    |\n",
    "| 7  | Η  | η   | /'i:tə/                    | eta     | 伊塔        | 迟滞系数、机械效率                         |\n",
    "| 8  | Θ  | θ   | /'θi:tə/                   | theta   | 西塔        | 温度、角度                             |\n",
    "| 9  | Ι  | ι   | /aɪ’əʊtə/                  | iota    | 约\\(yāo\\)塔 | 微小、一点                             |\n",
    "| 10 | Κ  | κ   | /'kæpə/                    | kappa   | 卡帕        | 介质常数、绝热指数                         |\n",
    "| 11 | ∧  | λ   | /'læmdə/                   | lambda  | 拉姆达       | 波长、体积、导热系数 普朗克常数                  |\n",
    "| 12 | Μ  | μ   | /mju:/                     | mu      | 谬         | 磁导率、微、动摩擦系(因)数、流体动力黏度、货币单位,莫比乌斯函数 |\n",
    "| 13 | Ν  | ν   | /nju:/                     | nu      | 纽         | 磁阻系数、流体运动粘度、光波频率、化学计量数            |\n",
    "| 14 | Ξ  | ξ   | 希腊 /ksi/英美 /ˈzaɪ/ 或 /ˈsaɪ/ | xi      | 克西        | 随机变量、(小)区间内的一个未知特定值               |\n",
    "| 15 | Ο  | ο   | /əuˈmaikrən/或 /ˈɑmɪˌkrɑn/  | omicron | 奥米克戎      | 高阶无穷小函数                           |\n",
    "| 16 | ∏  | π   | /paɪ/                      | pi      | 派         | 圆周率、π\\(n\\)表示不大于n的质数个数、连乘          |\n",
    "| 17 | Ρ  | ρ   | /rəʊ/                      | rho     | 柔         | 电阻率、柱坐标和极坐标中的极径、密度、曲率半径           |\n",
    "| 18 | ∑  | σ,ς | /'sɪɡmə/                   | sigma   | 西格马       | 总和、表面密度、跨导、应力、电导率                 |\n",
    "| 19 | Τ  | τ   | /tɔ:/ 或 /taʊ/              | tau     | 陶         | 时间常数、切应力、2π(两倍圆周率)                |\n",
    "| 20 | Υ  | υ   | /ˈipsɪlon/或 /ˈʌpsɪlɒn/     | upsilon | 阿普西龙      | 位移                                |\n",
    "| 21 | Φ  | φ   | /faɪ/                      | phi     | 斐         | 磁通量、电通量、角、透镜焦度、热流量、电势、直径、欧拉函数、空集  |\n",
    "| 22 | Χ  | χ   | /kaɪ/                      | chi     | 希         | 统计学中有卡方\\(χ^2\\)分布                  |\n",
    "| 23 | Ψ  | ψ   | /ps/                       | psi     | 普西        | 角速、介质电通量、ψ函数、磁链                   |\n",
    "| 24 | Ω  | ω   | /'əʊmɪɡə/或 /oʊ’meɡə/       | omega   | 奥米伽/欧米伽   | 欧姆、角速度、角频率、交流电的电角度、化学中的质量分数、不饱和度  |\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 计量经济学绪论"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 什么是计量经济学\n",
    "顾名思义,“计量经济学”( Econometrics,也译为“经济计量学“)就是运用概率统计的方法对经济变量之间的(因果)关系进行定量分析的科学。之所以把“因果”两个字加括号,是因为计量经济学常常不足以确定经济变量之间的因果关系(由于实验数据的缺乏),另一方面,大多数实证分析的目的恰恰正是要确定变量之间的因果关系(即是否 X 导致 Y),而非仅仅是相关关系。因此,在学习与应用计量经济学的过程中,很有必要时时以“因果关系”作为思考的框架与指引。\n",
    "\n",
    "比如,你看到街上人们带伞,于是预测今天要下雨。这是一种相关关系。然而,“人们带伞”并不是造成“下雨”的原因。因此,计量分析必须建立在经济理论的基础之上。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 经济数据的特点与类型\n",
    "由于在经济学中通常无法像自然科学那样做控制实验( controlled experiment),故经济数据一般不是实验数据( experimental data),而是自然发生的观测数据( observational data)。由于个人行为的随机性,所有经济变量原则上都是随机变量。\n",
    "\n",
    "在计量经济学的本科课程中,为了简单起见,有时假设解释变量是非随机的、固定的(fixed regressors)。这只是为了教学法上的方便,却给更深入的理论探讨带来了不便。比如,如果解释变量为非随机,则无法考虑其与扰动项的相关性。因此,在这本研究生水平的教材中,所有变量都是随机的(即便非随机的常数,也可以视为退化的随机变量)。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 概率统计回顾"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "该内容可以查阅本科数学教材,这里不再详述\n",
    "\n",
    "* 概率与条件概率\n",
    "* 分布与条件分布\n",
    "* 随机变量的数字特征\n",
    "* 迭代期望定律\n",
    "* 随机变量无关的三个层次概念\n",
    "* 常用连续型统计分布\n",
    "* 统计推断的思想"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## python 学习\n",
    "### python基础\n",
    "* [Python官方中文文档](https://docs.python.org/zh-cn/3/) ❤️❤️❤️\n",
    "\n",
    "* [菜鸟教程](https://www.runoob.com/python3/python3-basic-syntax.html) ❤️❤️\n",
    "\n",
    "* [廖雪峰教程](https://www.liaoxuefeng.com/wiki/1016959663602400) ❤️\n",
    "* [白月黑羽教 python](http://www.python3.vip/tut/py/basic/01/) ❤️❤️"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Pandas\n",
    "Pandas 是 Python 的外部模块,它非常像 Excel,提供了分析数据的功能。它提供了两个数据类型 Series 和 DataFrame。\n",
    "\n",
    "* [Github 的 joyful-pandas 项目](https://github.com/datawhalechina/joyful-pandas)\n",
    "\n",
    "* [Pandas 中文文档](https://www.pypandas.cn/docs/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Numpy\n",
    "NumPy 是使用 Python 进行科学计算的基础软件包。除其他外,它包括:\n",
    "* 功能强大的 N 维数组对象。\n",
    "* 精密广播功能函数。\n",
    "* 集成 C/C+和 Fortran 代码的工具。\n",
    "* 强大的线性代数、傅立叶变换和随机数功能。\n",
    "\n",
    "中文文档:https://www.numpy.org.cn/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Matplotlib\n",
    "Matplotlib 是一个 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。\n",
    "\n",
    "中文文档:https://www.matplotlib.org.cn/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Statsmodels\n",
    "statsmodels is a Python module that provides classes and functions for the estimation of many different statistical models, as well as for conducting statistical tests, and statistical data exploration.\n",
    "\n",
    "官方文档:https://www.statsmodels.org/stable/index.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### arch\n",
    "arch 模块是一个计算波动率模型和其他金融计量模型的 python 第三方库\n",
    "\n",
    "The ARCH toolbox contains routines for:\n",
    "\n",
    "* Univariate volatility models;\n",
    "* Bootstrapping;\n",
    "* Multiple comparison procedures;\n",
    "* Unit root tests;\n",
    "* Cointegration Testing and Estimation; and\n",
    "* Long-run covariance estimation.\n",
    "\n",
    "Future plans are to continue to expand this toolbox to include additional routines relevant for the analysis of financial data.\n",
    "\n",
    "官方文档:https://arch.readthedocs.io/en/latest/genindex.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Scipy\n",
    "SciPy (pronounced “Sigh Pie”) is a Python-based ecosystem of open-source software for mathematics, science, and engineering.\n",
    "\n",
    "官方文档:https://www.scipy.org/index.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## matlab 学习\n",
    "### matlab 安装\n",
    "参考公众号:[MATLAB R2020a软件安装教程](https://mp.weixin.qq.com/s/hpcd50mGAETwQrGj06RGHw)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 入门基础\n",
    "#### 由来\n",
    "MATLAB 源于 Matrix Laboratory 一词,原为矩阵实验室的意思。它的最初版本是一种专门用于矩阵数值计算的软件。随着 MATLAB 的逐步市场化,其功能也越来越强大,是一门集数值计算、符号运算和图形处理等多种功能于一体的科学计算软件包。它还包含许多专用工具箱,可以满足不同专业用户的需求。如科学计算、动态仿真、系统控制、数据采集、模糊逻辑、金融财政、图形处理、信号处理、数据统计和器材控制等。\n",
    "\n",
    "#### 界面介绍\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0530/232015.png\" width=\"750\" ></div>\n",
    "\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0530/232110.png\" width=\"196\" ></div>\n",
    "\n",
    "#### 基础概念\n",
    "* **% 代表注释**  \n",
    "```matlab\n",
    "% 1.读取数据\n",
    "............. \n",
    "% 2.处理数据\n",
    ".............\n",
    "% 3.模型估计\n",
    ".............\n",
    "```\n",
    "* **= 代表赋值**\n",
    "```matlab\n",
    "a = 1;\n",
    "a = -a;\n",
    "```\n",
    "* **== 比较是否相等**\n",
    "* **; 代表不显示或者多个命令写在一行**\n",
    "```\n",
    "a = 1 b = 2    %报错\n",
    "a = 1; b = 2;\n",
    "```\n",
    "* **: 表示从某值到某值**\n",
    "```\n",
    "a=1:5;\n",
    "b=1:2:10;\n",
    "```\n",
    "* **`[ ]` 代表矩阵,矩阵内分号表示换行,逗号表示分隔元素**\n",
    "```\n",
    "a=[1,2;3,4];\n",
    "b=a(2,2);\n",
    "```\n",
    "* **' 代表转置**\n",
    "\n",
    "* **布尔值**\n",
    "\t* 真(非零数,常为1)\n",
    "\t* 假(0)\n",
    "\t\n",
    "* **字符串**\n",
    "\n",
    "  单引号或者双引号引起的内容\n",
    "\n",
    "* **变量类型**\n",
    "\n",
    "  * 字符串(char)\n",
    "    ```\n",
    "    a = {}\n",
    "    a{1} = 'time'\n",
    "    a{2} = '2019 - 10'\n",
    "    ```\n",
    "\n",
    "  * 双浮点数(double)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常见问题与注意事项\n",
    "* 严格区分大小写\n",
    "\n",
    "* 所有标点符号都要是英文状态输入,否则出现 bug 很难发现\n",
    "\n",
    "* 重在对模型的掌握,matlab 只是工具,python、R、stata、eviews 都类似\n",
    "\n",
    "* 快捷键\n",
    "\n",
    "  * ctrl+c 键可以强制停止运行的程序\n",
    "  * shift+enter 可以快速改变所有相同变量名\n",
    "  * ctrl+z 可以快速撤销上次操作\n",
    "  * ctrl+shift+z 回到下次操作\n",
    "\n",
    "* 设置路径\n",
    "\n",
    "  菜单栏点击 **设置路径** 进行文件夹添加\n",
    "\n",
    "* 向量对应位置乘积要用点乘\n",
    "\n",
    "  ```matlab\n",
    "  a=[1,2];\n",
    "  b=[2,3];\n",
    "  c=a*b;    %报错 \n",
    "  c=a.*b;\n",
    "  ```\n",
    "\n",
    "* 要转变观念,要从喜欢点点点,过渡到输入命令,输命令的好处在于编写一次,就不需要重复工作了\n",
    "\n",
    "* 变量名命名要合理,不能为中文,尽量不要用拼音,要简单易懂,不要和现有的函数名重复,否则会造成难以察觉的错误\n",
    "\n",
    "  两种命名方式:\n",
    "\n",
    "  第一种: StudentName (驼峰命名法)\n",
    "\n",
    "  第二种: student_name\n",
    "\n",
    "  不要是 xuesheng, SN, sum\n",
    "\n",
    "* 注意缩进,保证代码有较好的阅读感受\n",
    "\n",
    "* 代码不要冗余,使用两次及以上,需要函数封装\n",
    "\n",
    "* 不要怕报错,认真看报错信息,实在看不懂百度"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常用命令\n",
    "* clc 与 clean:两者常常结合使用,其中 clc 代表清屏,clear 代表清空工作区\n",
    "\n",
    "* help:帮助命令\n",
    "\n",
    "  ```matlab\n",
    "  help('clc')\n",
    "  help('dir')\n",
    "  help clc\n",
    "  help dir\n",
    "  ```\n",
    "\n",
    "* xlsread:读取 excel 文件数据\n",
    "\n",
    "  ```matlab\n",
    "  data=xlsread('C:\\Users\\Administrator\\Desktop\\hourse.xlsx')\n",
    "  ```\n",
    "\n",
    "  这里有个常见问题:excel 日期格式的数据无法加载进 matlab,需要将日期转化为文本\n",
    "\n",
    "* xlswrite:将 matlab 工作区数据写入 excel\n",
    "\n",
    "  ```matlab\n",
    "  xlswrite('C:\\Users\\Administrator\\Desktop\\qwalds1.xlsx', walds)\n",
    "  ```\n",
    "\n",
    "* x2mdate:将excel日期数据转化为matlab日期\n",
    "\n",
    "  ```matlab\n",
    "  mldate  = x2mdate(data(:,1)); % 导入日期\n",
    "  ```\n",
    "\n",
    "* input:输入\n",
    "\n",
    "* disp:打印\n",
    "\n",
    "  ```matlab\n",
    "  disp(['第' num2str(i) '个已完成,共' num2str(T-1) '个'])\n",
    "  ```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常用函数\n",
    "* 矩阵\n",
    "\n",
    "  * 矩阵创建\n",
    "    * ones:1 矩阵\n",
    "    * zeros:零矩阵\n",
    "    * eye:单位矩阵\n",
    "  * inv:求逆\n",
    "  * det:求行列式\n",
    "\n",
    "* 数据统计\n",
    "\n",
    "  * 描述性统计\n",
    "\n",
    "    * mean:均值\n",
    "    * min:最小值\n",
    "    * max:最大值\n",
    "    * var:方差\n",
    "    * std:标准差\n",
    "    * sum:求和\n",
    "    * skewness:偏度\n",
    "    * kurtosis:峰度\n",
    "\n",
    "  * abs:绝对值\n",
    "\n",
    "  * sqrt:开根号\n",
    "\n",
    "  * 检验\n",
    "\n",
    "    * jbtest:JB 检验\n",
    "    * adftest\n",
    "    * archtest\n",
    "    * lbqtest:Q 检验\n",
    "\n",
    "    * kstest2:KS 检验\n",
    "\n",
    "  * diff:差分处理\n",
    "\n",
    "  * length:求长度\n",
    "\n",
    "  * size\n",
    "\n",
    "  * linspace\n",
    "\n",
    "    linspace(X1, X2, N) generates N points between X1 and X2.\n",
    "    For N = 1, linspace returns X2.\n",
    "\n",
    "* 取整函数\n",
    "\n",
    "  * floor:向下取整\n",
    "  * ceil:向上取整\n",
    "  * round:取最接近的整数\n",
    "\n",
    "* 概率统计\n",
    "\n",
    "  * 产生随机变量\n",
    "\n",
    "    * 正态分布的随机数据生成\n",
    "\n",
    "      ```matlab\n",
    "      normrnd(mu,sigma,[m,n])\n",
    "      ```\n",
    "\n",
    "    * 均匀分布的随机数据生成\n",
    "\n",
    "      ```\n",
    "      unifrnd\n",
    "      unidrnd(离散)\n",
    "      ```\n",
    "\n",
    "    * 卡方分布:chi2rnd\n",
    "\n",
    "    * t 分布:trnd\n",
    "\n",
    "  * 概率密度计算\n",
    "\n",
    "    * 通用函数概率密度值\n",
    "\n",
    "      ```\n",
    "      y = pdf(name,X,A)\n",
    "      \t卡方分布:chi2\n",
    "      \tF分布:f或者F\n",
    "      \t正态分布:norm或者Normal\n",
    "      \tT分布:t或者T\n",
    "      \t均匀分布:unif或Uniform\n",
    "      \t离散均匀分布:unid\n",
    "      ```\n",
    "\n",
    "    * 专用函数概率密度值\n",
    "\n",
    "      ```\n",
    "      unifpdf\n",
    "      Unidpdf\n",
    "      normpdf:计算f(0):normpdf(0)等价于1/sqrt(2*pi)\n",
    "      chi2pdf\n",
    "      tpdf\n",
    "      fpdf\n",
    "      ```\n",
    "\n",
    "  * 累计概率分布:跟概率密度相似,只需将 pdf 改为 cdf\n",
    "\n",
    "* dir:遍历当前路径下的全部文件\n",
    "\n",
    "  ```matlab\n",
    "  file=dir(('C:\\Users\\Administrator\\Desktop');\n",
    "  ```\n",
    "\n",
    "* regress:OLS 回归\n",
    "\n",
    "* plot:绘图\n",
    "\n",
    "* fminsearch:求无条件极值,例如非线性回归,分位数回归,最大似然估计均会用到"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常见语法\n",
    "* for 循环:用于处理确定次数的循环\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:打印1到10\n",
    "  for i=1:10\n",
    "  \tdisp(i)\n",
    "  end\n",
    "  \n",
    "  % 例题2:计算1加到100\n",
    "  sum = 0 ;\n",
    "  for i=1:100\n",
    "    sum = sum + i;\n",
    "  end\n",
    "  ```\n",
    "\n",
    "* if 语句:用于选择满足的情况\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:判断某个数是奇数还是偶数\n",
    "  num = input('请输入一个数:');\n",
    "  if mod(num,2)==0 \n",
    "    disp('此数为偶数')\n",
    "  elseif mod(num,2)==1\n",
    "    disp('此数为奇数')\n",
    "  else disp('此数不是整数')\n",
    "  end\n",
    "  ```\n",
    "\n",
    "* switch-case:用于同种类型的选择\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:输入数字返回星期\n",
    "  num = 3;\n",
    "  \n",
    "  switch num\n",
    "  \tcase 1\n",
    "  \t\tdate = 'Monday'\n",
    "  \tcase 2\n",
    "  \t\tdate = 'Tuseday'\n",
    "  .......\n",
    "  \totherwise\n",
    "  \t\tdisp('输入错误')\n",
    "  end\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* while 循环:多用于处理不确定次数的循环,也可以用于处理确定次数的循环\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:计算1加到100\n",
    "  i = 0;\n",
    "  sums = 0;\n",
    "  while i <=99\n",
    "     i = i+1;\n",
    "     sums = sums + i;\n",
    "  end\n",
    "  \n",
    "  % 例题2:直到输入一个奇数才停止\n",
    "  num = input('请输入一个奇数:');\n",
    "  while mod(num,2) ~= 1 \n",
    "    num = input('此数并不是奇数,请重新输入一个数:');\n",
    "  end\n",
    "  disp('恭喜输入成功')\n",
    "  \n",
    "  % 例题3:模拟输入密码\n",
    "  user = 'deng';\n",
    "  password = '12345';\n",
    "  \n",
    "  name = input('请输入用户名:','s');\n",
    "  while strcmp(name,user) == 0\n",
    "    name = input('用户名不存在,请重新输入:','s');\n",
    "  end\n",
    "  pwd = input('用户名输入正确,请输入密码:','s');\n",
    "  while strcmp(pwd,password) == 0\n",
    "    pwd = input('密码错误,请重新输入:','s');\n",
    "  end\n",
    "  disp('恭喜密码输入正确,已进入系统!!!')\n",
    "  \n",
    "  % 思考如何在密码输入错误5次后,暂停1分钟,错误10次后暂停10分钟\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* break:用于找到第一个满足的情况并跳出循环\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:找到10-20之间第一个奇数\n",
    "  for i = 10:20\n",
    "    if mod(i,2)==1\n",
    "      disp(i)\n",
    "      break\n",
    "    end\n",
    "  end\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* continue:用于跳过不满足的情况\n",
    "\n",
    "  ```matlab\n",
    "  % 例题1:打印10-20之间所有的偶数\n",
    "  %第一种方法\n",
    "  for i = 10:20\n",
    "    if mod(i,2)==0\n",
    "      disp(i)\n",
    "    end\n",
    "  end\n",
    "  \n",
    "  %第二种方法\n",
    "  for i = 10:20\n",
    "    if mod(i,2)==1\n",
    "      continue\n",
    "    end\n",
    "    disp(i)\n",
    "  end\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* try-catch:用于可能发生错误的情况\n",
    "\n",
    "  ```\n",
    "  try\n",
    "  A\n",
    "  catch\n",
    "  B\n",
    "  end\n",
    "  C\n",
    "  \n",
    "  说明:尝试检查错误。\n",
    "  A语句正确,执行A、C,B不执行;\n",
    "  A语句错误,A不执行,判断B,B正确执行B、C,B错误不执行B,执行C。\n",
    "  \n",
    "  多用于打开文件,有就打开,没有就创建\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* error\n",
    "\n",
    "  ```matlab\n",
    "  for i=1:10\n",
    "    if i==5\n",
    "      error('error')\n",
    "    end\n",
    "    disp(i)\n",
    "  end\n",
    "  ```\n",
    "\n",
    "  \n",
    "\n",
    "* warning\n",
    "\n",
    "  ```matlab\n",
    "  for i=1:10\n",
    "    if i==5\n",
    "      warning('warning')\n",
    "    end\n",
    "    disp(i)\n",
    "  end\n",
    "  ```\n",
    "\n",
    "* pause:pause(n)暂停 n 秒"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 创建函数\n",
    "* 如何创建\n",
    "  如果 M 文件的第一个可执行语句以 function 开始,该文件就是函数文件。从使用的角度看,函数是一个黑箱,把一些数据送进去,经加工处理,把结果送出来。\n",
    "\n",
    "  ```matlab\n",
    "  function [sum,var]=stat(data)\n",
    "  ```\n",
    "\n",
    "  <div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0531/125236.png\" width=\"457\" ></div>\n",
    "\n",
    "* 注意事项\n",
    "\n",
    "  * 函数文件内定义的变量为局部变量,只在函数文件内部起作用,而函数文件执行完后,这些内部变量将被清除\n",
    "  * 记得要将自己创建的函数,放在matlab搜索路径\n",
    "\n",
    "* 例子\n",
    "\n",
    "  计算列向量的平均值和方差\n",
    "\n",
    "  ```matlab\n",
    "  function [data_sum,data_var]=stat(data)\n",
    "  \n",
    "  % **************************************** help *********************************************\n",
    "  % 函数功能:\n",
    "  % 计算某列向量(data)的元素和以及方差\n",
    "  %\n",
    "  % 输入变量:\n",
    "  % data为待输入列向量\n",
    "  % \n",
    "  % 输出变量:\n",
    "  % data_sum为该列向量的元素和  ; data_var为该列向量的方差\n",
    "  % ***************************************** help ********************************************\n",
    "  \n",
    "  % 1.判断data是否为列向量\n",
    "  [~,b] = size(data);\n",
    "  if b ~= 1 ; error('错误:data应为列向量');end\n",
    "  \n",
    "  % 2.计算元素和以及方差\n",
    "  data_sum = sum(data);  data_var = var(data); \n",
    "  ```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 绘图专题\n",
    "#### plot函数用法总结\n",
    "* [matlab常用的设置,坐标系、线条颜色、线型,字体、属性](https://blog.csdn.net/qq_20823641/article/details/51306986)\n",
    "\n",
    "* [MATLAB作图的图例控制](https://blog.csdn.net/kai165416/article/details/78393816)\n",
    "\n",
    "* [MATLAB学习——Matlab绘图系列之基本绘图](https://mp.weixin.qq.com/s/98uoii3BveEtQGYJHNP0ww)\n",
    "\n",
    "#### 绘制收益率图\n",
    "```matlab\n",
    "clc;clear;\n",
    "% 1.导入数据\n",
    "data = xlsread('./数据/hourse.xlsx');\n",
    "mldate = x2mdate(data(:,1)); % 导入日期\n",
    "f1 = data(:,2);%一线城市房价同月环比\n",
    "f2 = data(:,3);%二线城市房价同月环比\n",
    "f3 = data(:,4);%三线城市房价同月环比\n",
    "e = data(:,6);%汇率做对数差分\n",
    "\n",
    "% 2.绘制原始数据波动图\n",
    "% 2.1 创建绘图窗口\n",
    "fig=figure; \n",
    "% 2.2 设置窗口位置及颜色\n",
    "set(fig,'Position',[100 100 1100 320],'Color',[1 1 1])\n",
    "% 2.3 绘制第二个子图\n",
    "subplot(1,2,2);f2plot = plot(mldate,e,'-o'); \n",
    "% 2.4 将横轴改为日期格式\n",
    "datetick('x','keeplimits')\n",
    "% 2.5 更改字号大小\n",
    "set(gca,'FontSize',14) \n",
    "% 2.6 使图像更紧凑\n",
    "axis tight;\n",
    "% 2.7 添加标题\n",
    "title('汇率波动图(对数差分)','FontSize',14) \n",
    "% 2.8 调整图像颜色以及线条宽度,可以在2.3内同时进行\n",
    "set(f2plot,'Color',[0 0 1],'LineWidth',2)\n",
    "% 2.9 添加网格线\n",
    "grid on\n",
    "set(gca, 'GridLineStyle' ,'--','LineWidth',1,'GridAlpha',1)\n",
    "% 2.9 绘制第一个子图\n",
    "subplot(1,2,1);fplot=plot(mldate,f1,'-rs'); \n",
    "hold on   %保证不覆盖上图\n",
    "plot(mldate,f2,'-^','LineWidth',2,'MarKerFaceColor',[1 .1 1],'Color',[1 .1 0.1]);\n",
    "plot(mldate,f3,'-p','LineWidth',2,'MarKerFaceColor',[1 0.5 0],'Color',[1 0.5 0]);\n",
    "datetick('x','keeplimits')\n",
    "axis tight;\n",
    "set(gca,'FontSize',14) \n",
    "title('各线城市房价波动图','FontSize',14) \n",
    "set(fplot,'Color',[0.196080 .803920 .19608],'LineWidth',2)\n",
    "grid on\n",
    "set(gca, 'GridLineStyle' ,'--','LineWidth',1,'GridAlpha',1)\n",
    "% 2.10 调整图像坐标位置\n",
    "set(fig.Children(1),'Position',[0.055,0.1,0.42,0.8])\n",
    "set(fig.Children(2),'Position',[0.55,0.1,0.42,0.8])\n",
    "% 2.11 加上第一个子图图例\n",
    "legend('一线城市','二线城市','三线城市')\n",
    "```\n",
    "\n",
    "#### 效果展示\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/211040.png\" width=\"750\" ></div>\n",
    "\n",
    "#### 关键步骤\n",
    "* 设置窗口位置\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/211935.png\" width=\"507\" ></div>\n",
    "\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/211953.png\" width=\"301\" ></div>\n",
    "\n",
    "* 调整图像坐标位置\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/212103.png\" width=\"405\" ></div>\n",
    "\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/212119.png\" width=\"507\" ></div>\n",
    "\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/212133.png\" width=\"298\" ></div>\n",
    "\n",
    "* 复制图片\n",
    "<div align=center><img src=\"https://gitee.com/lei940324/picture/raw/master/img/2020/0603/212155.png\" width=\"391\" ></div>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}