精华内容
下载资源
问答
  • matlab函数总结

    千次阅读 2018-07-28 10:38:58
    ndims(A)返回A的维数 size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,返回行数和列数 nnz(A)返回A中非0元素的...MATLAB的取整函数:fix(x), floor(x) :,ceil(x) , ro...
    ndims(A)返回A的维数
    size(A)返回A各个维的最大元素个数
    length(A)返回max(size(A))
    [m,n]=size(A)如果A是二维数组,返回行数和列数
    nnz(A)返回A中非0元素的个数

    MATLAB的取整函数:fix(x), floor(x) :,ceil(x) , round(x)
    (1)fix(x) : 截尾取整.

    >> fix( [3.12 -3.12])

    ans =

         3 -3
    (2)floor(x):不超过x 的最大整数.(高斯取整)

    >> floor( [3.12 -3.12])

    ans =

         3 -4

    (3)ceil(x) : 大于x 的最小整数

    >> ceil( [3.12 -3.12])

    ans =

         4 -3

    (4)四舍五入取整

    >> round(3.12 -3.12)

    ans =

         0

    >> round([3.12 -3.12])

    ans =

         3 -3

    >>




    如何用matlab生成随机数函数
    rand(1)
    rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数)
    另外:
    Matlab随机数生成函数
    betarnd 贝塔分布的随机数生成器
    binornd 二项分布的随机数生成器
    chi2rnd 卡方分布的随机数生成器
    exprnd 指数分布的随机数生成器
    frnd f分布的随机数生成器
    gamrnd 伽玛分布的随机数生成器
    geornd 几何分布的随机数生成器
    hygernd 超几何分布的随机数生成器
    lognrnd 对数正态分布的随机数生成器
    nbinrnd 负二项分布的随机数生成器
    ncfrnd 非中心f分布的随机数生成器
    nctrnd 非中心t分布的随机数生成器
    ncx2rnd 非中心卡方分布的随机数生成器
    normrnd 正态(高斯)分布的随机数生成器
    poissrnd 泊松分布的随机数生成器
    raylrnd 瑞利分布的随机数生成器
    trnd 学生氏t分布的随机数生成器
    unidrnd 离散均匀分布的随机数生成器
    unifrnd 连续均匀分布的随机数生成器
    weibrnd 威布尔分布的随机数生成器

    一、MATLAB常用的基本数学函数
      abs(x):纯量的绝对值或向量的长度
      angle(z):复数z的相角(Phase angle)
      sqrt(x):开平方
      real(z):复数z的实部
      imag(z):复数z的虚部
      conj(z):复数z的共轭复数
      round(x):四舍五入至最近整数
      fix(x):无论正负,舍去小数至最近整数
      floor(x):地板函数,即舍去正小数至最近整数
      ceil(x):天花板函数,即加入正小数至最近整数
      rat(x):将实数x化为分数表示
      rats(x):将实数x化为多项分数展开
      sign(x):符号函数 (Signum function)。
      当x<0时,sign(x)=-1;
      当x=0时,sign(x)=0;
      当x>0时,sign(x)=1。
      
      rem(x,y):求x除以y的馀数
      gcd(x,y):整数x和y的最大公因数
      lcm(x,y):整数x和y的最小公倍数
      exp(x):自然指数
      pow2(x):2的指数
      log(x):以e为底的对数,即自然对数或
      log2(x):以2为底的对数
      log10(x):以10为底的对数
      二、MATLAB常用的三角函数
      sin(x):正弦函数
      cos(x):馀弦函数
      tan(x):正切函数
      asin(x):反正弦函数
      acos(x):反馀弦函数
      atan(x):反正切函数
      atan2(x,y):四象限的反正切函数
      sinh(x):超越正弦函数
      cosh(x):超越馀弦函数
      tanh(x):超越正切函数
      asinh(x):反超越正弦函数
      acosh(x):反超越馀弦函数
      atanh(x):反超越正切函数
      三、适用於向量的常用函数有:
      min(x): 向量x的元素的最小值
      max(x): 向量x的元素的最大值
      mean(x): 向量x的元素的平均值
      median(x): 向量x的元素的中位数
      std(x): 向量x的元素的标准差
      diff(x): 向量x的相邻元素的差
      sort(x): 对向量x的元素进行排序(Sorting)
      length(x): 向量x的元素个数
      norm(x): 向量x的欧氏(Euclidean)长度
      sum(x): 向量x的元素总和
      prod(x): 向量x的元素总乘积
      cumsum(x): 向量x的累计元素总和
      cumprod(x): 向量x的累计元素总乘积
      dot(x, y): 向量x和y的内积
      cross(x, y): 向量x和y的外积
      四、MATLAB的永久常数
      i或j:基本虚数单位(即)
      eps:系统的浮点(Floating-point)精确度
      inf:无限大, 例如1/0
      nan或NaN:非数值(Not a number),例如0/0
      pi:圆周率 p(= 3.1415926…)
      realmax:系统所能表示的最大数值
      realmin:系统所能表示的最小数值
      nargin: 函数的输入引数个数
      nargin: 函数的输出引数个数
      五、MATLAB基本绘图函数
      plot: x轴和y轴均为线性刻度(Linear scale)
      loglog: x轴和y轴均为对数刻度(Logarithmic scale)
      semilogx: x轴为对数刻度,y轴为线性刻度
      semilogy: x轴为线性刻度,y轴为对数刻度
      六、plot绘图函数的叁数
      字元 颜色 字元 图线型态
       y 黄色 . 点
       k 黑色 o 圆
       w 白色 x x
       b 蓝色 + +
       g 绿色 * *
       r 红色 - 实线
       c 亮青色 : 点线
       m 锰紫色 -. 点虚线
       – 虚线
      七、注解
      xlabel(‘Input Value’); % x轴注解
      ylabel(‘Function Value’); % y轴注解
      title(‘Two Trigonometric Functions’); % 图形标题
      legend(‘y = sin(x)’,’y = cos(x)’); % 图形注解
      grid on; % 显示格线
      八、二维绘图函数
      bar 长条图
       errorbar 图形加上误差范围
       fplot 较精确的函数图形
       polar 极座标图
       hist 累计图
       rose 极座标累计图
       stairs 阶梯图
       stem 针状图
       fill 实心图
       feather 羽毛图
       compass 罗盘图
       quiver 向量场图

    ----------------------------
    附录1 常用命令

    附录1.1 管理用命令函数名 功能描述 函数名 功能描述

    addpath 增加一条搜索路径 rmpath 删除一条搜索路径

    demo 运行Matlab演示程序 type 列出.M文件

    doc 装入超文本文档 version 显示Matlab的版本号

    help 启动联机帮助 what 列出当前目录下的有关文件

    lasterr 显示最后一条信息 whatsnew 显示Matlab的新特性

    lookfor 搜索关键词的帮助 which 造出函数与文件所在的目录

    path 设置或查询Matlab路径





    附录1.2管理变量与工作空间用命令 函数名 功能描述 函数名功能描述

    clear 删除内存中的变量与函数 pack 整理工作空间内存

    disp 显示矩阵与文本 save 将工作空间中的变量存盘

    length 查询向量的维数 size 查询矩阵的维数

    load 从文件中装入数据 who,whos 列出工作空间中的变量名





    附录1.3文件与操作系统处理命令 函数名 功能描述 函数名 功能描述

    cd 改变当前工作目录 edit 编辑.M文件

    delete 删除文件 matlabroot 获得Matlab的安装根目录

    diary 将Matlab运行命令存盘 tempdir 获得系统的缓存目录

    dir 列出当前目录的内容 tempname 获得一个缓存(temp)文件

    ! 执行操作系统命令





    附录1.4窗口控制命令 函数名 功能描述 函数名 功能描述

    echo 显示文件中的Matlab中的命令 more 控制命令窗口的输出页面

    format 设置输出格式





    附录1.5启动与退出命令 函数名 功能描述 函数名 功能描述

    matlabrc 启动主程序 quit 退出Matlab环境

    startup

    Matlab自启动程序





    附录2 运算符号与特殊字符附录

    2.1运算符号与特殊字符函数名 功能描述 函数名 功能描述

    + 加 … 续行标志

    - 减 , 分行符(该行结果不显示)

    * 矩阵乘 ; 分行符(该行结果显示)

    .* 向量乘 % 注释标志

    ^ 矩阵乘方 ! 操作系统命令提示符

    .^ 向量乘方 ’ 矩阵转置

    kron 矩阵kron积 . 向量转置

    \ 矩阵左除 = 赋值运算

    / 矩阵右除 == 关系运算之相等

    .\ 向量左除 ~= 关系运算之不等

    ./ 向量右除 < 关系运算之小于

    : 向量生成或子阵提取 <= 关系运算之小于等于

    () 下标运算或参数定义 > 关系运算之大于

    [] 矩阵生成 >= 关系运算之大于等于

    {} & 逻辑运算之与

    . 结构字段获取符 | 逻辑运算之或

    . 点乘运算,常与其他运算符联合使用(如.\) ~ 逻辑运算之非

    xor 逻辑运算之异成





    附录2.2逻辑函数 函数名 功能描述 函数名 功能描述

    all 测试向量中所用元素是否为真 is*(一类函数)

    检测向量状态.其中*表示一个确定的函数(isinf)

    any 测试向量中是否有真元素 *isa 检测对象是否为某一个类的对象

    exist 检验变量或文件是否定义 logical 将数字量转化为逻辑量

    find 查找非零元素的下标





    附录3 语言结构与调试

    附录3.1编程语言 函数名 功能描述 函数名 功能描述

    builtin 执行Matlab内建的函数 global 定义全局变量

    eval 执行Matlab语句构成的字符串 nargchk 函数输入输出参数个数检验

    feval 执行字符串指定的文件 script Matlab语句及文件信息

    function Matlab函数定义关键词





    附录3.2控制流程 函数名 功能描述 函数名 功能描述

    break 中断循环执行的语句 if 条件转移语句

    case 与switch结合实现多路转移 otherwise 多路转移中的缺省执行部分

    else 与if一起使用的转移语句 return 返回调用函数

    elseif 与if一起使用的转移语句 switch 与case结合实现多路转移

    end 结束控制语句块 warning 显示警告信息

    error 显示错误信息 while 循环语句

    for 循环语句





    附录3.3交互输入 函数名 功能描述 函数名 功能描述

    input 请求输入 menu 菜单生成

    keyboard 启动键盘管理 pause 暂停执行





    附录3.4面向对象编程 函数名 功能描述 函数名 功能描述

    class 生成对象 isa 判断对象是否属于某一类

    double 转换成双精度型 superiorto 建立类的层次关系

    inferiorto 建立类的层次关系 unit8 转换成8字节的无符号整数

    inline 建立一个内嵌对象





    附录3.5调试 函数名 功能描述 函数名 功能描述

    dbclear 清除调试断点 dbstatus 列出所有断点情况

    dbcont 调试继续执行 dbstep 单步执行

    dbdown 改变局部工作空间内存 dbstop 设置调试断点

    dbmex 启动对Mex文件的调试 sbtype 列出带命令行标号的.M文件

    dbquit 退出调试模式 dbup 改变局部工作空间内容

    dbstack 列出函数调用关系





    附录4 基本矩阵与矩阵处理

    附录4.1基本矩阵 函数名 功能描述 函数名 功能描述

    eye 产生单位阵 rand 产生随机分布矩阵

    linspace 构造线性分布的向量 randn 产生正态分布矩阵

    logspace 构造等对数分布的向量 zeros 产生零矩阵

    ones 产生元素全部为1的矩阵 : 产生向量





    附录4.2特殊向量与常量 函数名 功能描述 函数名 功能描述

    ans 缺省的计算结果变量 non 非数值常量常由0/0或Inf/Inf获得

    computer 运行Matlab的机器类型 nargin 函数中参数输入个数

    eps 精度容许误差(无穷小) nargout 函数中输出变量个数

    flops 浮点运算计数 pi 圆周率

    i 复数单元 realmax 最大浮点数值

    inf 无穷大 realmin 最小浮点数值

    inputname 输入参数名 varargin 函数中输入的可选参数

    j 复数单元 varargout 函数中输出的可选参数





    附录4.3时间与日期 函数名 功能描述 函数名 功能描述

    calender 日历 eomday 计算月末

    clock 时钟 etime 所用时间函数

    cputime 所用的CPU时间 now 当前日期与时间

    date 日期 tic 启动秒表计时器

    datenum 日期(数字串格式) toc 读取秒表计时器

    datestr 日期(字符串格式) weekday 星期函数

    datevoc 日期(年月日分立格式)





    附录4.4矩阵处理 函数名 功能描述 函数名 功能描述

    cat 向量连接 reshape 改变矩阵行列个数

    diag 建立对角矩阵或获取对角向量 rot90 将矩阵旋转90度

    fliplr 按左右方向翻转矩阵元素 tril 取矩阵的下三角部分

    flipud 按上下方向翻转矩阵元素 triu 取矩阵的上三角部分

    repmat 复制并排列矩阵函数





    附录5 特殊矩阵 函数名 功能描述 函数名 功能描述

    compan 生成伴随矩阵 invhilb 生成逆hilbert矩阵

    gallery 生成一些小的测试矩阵 magic 生成magic矩阵

    hadamard 生成hadamard矩阵 pascal 生成pascal矩阵

    hankel 生成hankel矩阵 toeplitz 生成toeplitz矩阵

    hilb 生成hilbert矩阵 wilkinson 生成wilkinson特征值测试矩阵





    附录6 数学函数

    附录6.1三角函数 函数名 功能描述 函数名 功能描述

    sin/asin 正弦/反正弦函数 sec/asec 正割/反正割函数

    sinh/asinh 双曲正弦/反双曲正弦函数 sech/asech 双曲正割/反双曲正割函数

    cos/acos 余弦/反余弦函数 csc/acsc 余割/反余割函数

    cosh/acosh 双曲余弦/反双曲余弦函数 csch/acsch 双曲余割/反双曲余割函数

    tan/atan 正切/反正切函数 cot/acot 余切/反余切函数

    tanh/atanh 双曲正切/反双曲正切函数 coth/acoth 双曲余切/反双曲余切函数

    atan2 四个象限内反正切函数





    附录6.2指数函数 函数名 功能描述 函数名 功能描述

    exp 指数函数 log10 常用对数函数

    log 自然对数函数 sqrt 平方根函数





    附录6.3复数函数 函数名 功能描述 函数名 功能描述

    abs 绝对值函数 imag 求虚部函数

    angle 角相位函数 real 求实部函数

    conj 共轭复数函数





    附录6.4数值处理 函数名 功能描述 函数名 功能描述

    fix 沿零方向取整 round 舍入取整

    floor 沿-∞方向取整 rem 求除法的余数

    ceil 沿+∞方向取整 sign 符号函数





    附录6.5其他特殊数学函数 函数名 功能描述 函数名 功能描述

    airy airy函数 erfcx 比例互补误差函数

    besselh bessel函数(hankel函数) erfinv 逆误差函数

    bessili 改进的第一类bessel函数 expint 指数积分函数

    besselk 改进的第二类bessel函数 gamma gamma函数

    besselj 第一类bessel函数 gammainc 非完全gamma函数

    bessely 第二类bessel函数 gammaln gamma对数函数

    beta beta函数 gcd 最大公约数

    betainc 非完全的beta函数 lcm 最小公倍数

    betaln beta对数函数 log2 分割浮点数

    elipj Jacobi椭圆函数 legendre legendre伴随函数

    ellipke 完全椭圆积分 pow2 基2标量浮点数

    erf 误差函数 rat 有理逼近

    erfc 互补误差函数 rats 有理输出
    -----------------------------
    A a
    abs 绝对值、模、字符的ASCII码值
    acos 反余弦
    acosh 反双曲余弦
    acot 反余切
    acoth 反双曲余切
    acsc 反余割
    acsch 反双曲余割
    align 启动图形对象几何位置排列工具
    all 所有元素非零为真
    angle 相角
    ans 表达式计算结果的缺省变量名
    any 所有元素非全零为真
    area 面域图
    argnames 函数M文件宗量名
    asec 反正割
    asech 反双曲正割
    asin 反正弦
    asinh 反双曲正弦
    assignin 向变量赋值
    atan 反正切
    atan2 四象限反正切
    atanh 反双曲正切
    autumn 红黄调秋色图阵
    axes 创建轴对象的低层指令
    axis 控制轴刻度和风格的高层指令
    B b

    bar 二维直方图
    bar3 三维直方图
    bar3h 三维水平直方图
    barh 二维水平直方图
    base2dec X进制转换为十进制
    bin2dec 二进制转换为十进制
    blanks 创建空格串
    bone 蓝色调黑白色图阵
    box 框状坐标轴
    break while 或for 环中断指令
    brighten 亮度控制


    C c

    capture (3版以前)捕获当前图形
    cart2pol 直角坐标变为极或柱坐标
    cart2sph 直角坐标变为球坐标
    cat 串接成高维数组
    caxis 色标尺刻度
    cd 指定当前目录
    cdedit 启动用户菜单、控件回调函数设计工具
    cdf2rdf 复数特征值对角阵转为实数块对角阵
    ceil 向正无穷取整
    cell 创建元胞数组
    cell2struct 元胞数组转换为构架数组
    celldisp 显示元胞数组内容
    cellplot 元胞数组内部结构图示
    char 把数值、符号、内联类转换为字符对象
    chi2cdf 分布累计概率函数
    chi2inv 分布逆累计概率函数
    chi2pdf 分布概率密度函数
    chi2rnd 分布随机数发生器
    chol Cholesky分解
    clabel 等位线标识
    cla 清除当前轴
    class 获知对象类别或创建对象
    clc 清除指令窗
    clear 清除内存变量和函数
    clf 清除图对象
    clock 时钟
    colorcube 三浓淡多彩交叉色图矩阵
    colordef 设置色彩缺省值
    colormap 色图
    colspace 列空间的基
    close 关闭指定窗口
    colperm 列排序置换向量
    comet 彗星状轨迹图
    comet3 三维彗星轨迹图
    compass 射线图
    compose 求复合函数
    cond (逆)条件数
    condeig 计算特征值、特征向量同时给出条件数
    condest 范 -1条件数估计
    conj 复数共轭
    contour 等位线
    contourf 填色等位线
    contour3 三维等位线
    contourslice 四维切片等位线图
    conv 多项式乘、卷积
    cool 青紫调冷色图
    copper 古铜调色图
    cos 余弦
    cosh 双曲余弦
    cot 余切
    coth 双曲余切
    cplxpair 复数共轭成对排列
    csc 余割
    csch 双曲余割
    cumsum 元素累计和
    cumtrapz 累计梯形积分
    cylinder 创建圆柱


    D d

    dblquad 二重数值积分
    deal 分配宗量
    deblank 删去串尾部的空格符
    dec2base 十进制转换为X进制
    dec2bin 十进制转换为二进制
    dec2hex 十进制转换为十六进制
    deconv 多项式除、解卷
    delaunay Delaunay 三角剖分
    del2 离散Laplacian差分
    demo Matlab演示
    det 行列式
    diag 矩阵对角元素提取、创建对角阵
    diary Matlab指令窗文本内容记录
    diff 数值差分、符号微分
    digits 符号计算中设置符号数值的精度
    dir 目录列表
    disp 显示数组
    display 显示对象内容的重载函数
    dlinmod 离散系统的线性化模型
    dmperm 矩阵Dulmage-Mendelsohn 分解
    dos 执行DOS 指令并返回结果
    double 把其他类型对象转换为双精度数值
    drawnow 更新事件队列强迫Matlab刷新屏幕
    dsolve 符号计算解微分方程


    E e

    echo M文件被执行指令的显示
    edit 启动M文件编辑器
    eig 求特征值和特征向量
    eigs 求指定的几个特征值
    end 控制流FOR等结构体的结尾元素下标
    eps 浮点相对精度
    error 显示出错信息并中断执行
    errortrap 错误发生后程序是否继续执行的控制
    erf 误差函数
    erfc 误差补函数
    erfcx 刻度误差补函数
    erfinv 逆误差函数
    errorbar 带误差限的曲线图
    etreeplot 画消去树
    eval 串演算指令
    evalin 跨空间串演算指令
    exist 检查变量或函数是否已定义
    exit 退出Matlab环境
    exp 指数函数
    expand 符号计算中的展开操作
    expint 指数积分函数
    expm 常用矩阵指数函数
    expm1 Pade法求矩阵指数
    expm2 Taylor法求矩阵指数
    expm3 特征值分解法求矩阵指数
    eye 单位阵
    ezcontour 画等位线的简捷指令
    ezcontourf 画填色等位线的简捷指令
    ezgraph3 画表面图的通用简捷指令
    ezmesh 画网线图的简捷指令
    ezmeshc 画带等位线的网线图的简捷指令
    ezplot 画二维曲线的简捷指令
    ezplot3 画三维曲线的简捷指令
    ezpolar 画极坐标图的简捷指令
    ezsurf 画表面图的简捷指令
    ezsurfc 画带等位线的表面图的简捷指令



    F f

    factor 符号计算的因式分解
    feather 羽毛图
    feedback 反馈连接
    feval 执行由串指定的函数
    fft 离散Fourier变换
    fft2 二维离散Fourier变换
    fftn 高维离散Fourier变换
    fftshift 直流分量对中的谱
    fieldnames 构架域名
    figure 创建图形窗
    fill3 三维多边形填色图
    find 寻找非零元素下标
    findobj 寻找具有指定属性的对象图柄
    findstr 寻找短串的起始字符下标
    findsym 机器确定内存中的符号变量
    finverse 符号计算中求反函数
    fix 向零取整
    flag 红白蓝黑交错色图阵
    fliplr 矩阵的左右翻转
    flipud 矩阵的上下翻转
    flipdim 矩阵沿指定维翻转
    floor 向负无穷取整
    flops 浮点运算次数
    flow Matlab提供的演示数据
    fmin 求单变量非线性函数极小值点(旧版)
    fminbnd 求单变量非线性函数极小值点
    fmins 单纯形法求多变量函数极小值点(旧版)
    fminunc 拟牛顿法求多变量函数极小值点
    fminsearch 单纯形法求多变量函数极小值点
    fnder 对样条函数求导
    fnint 利用样条函数求积分
    fnval 计算样条函数区间内任意一点的值
    fnplt 绘制样条函数图形
    fopen 打开外部文件
    for 构成for环用
    format 设置输出格式
    fourier Fourier 变换
    fplot 返函绘图指令
    fprintf 设置显示格式
    fread 从文件读二进制数据
    fsolve 求多元函数的零点
    full 把稀疏矩阵转换为非稀疏阵
    funm 计算一般矩阵函数
    funtool 函数计算器图形用户界面
    fzero 求单变量非线性函数的零点


    G g

    gamma 函数
    gammainc 不完全 函数
    gammaln 函数的对数
    gca 获得当前轴句柄
    gcbo 获得正执行”回调”的对象句柄
    gcf 获得当前图对象句柄
    gco 获得当前对象句柄
    geomean 几何平均值
    get 获知对象属性
    getfield 获知构架数组的域
    getframe 获取影片的帧画面
    ginput 从图形窗获取数据
    global 定义全局变量
    gplot 依图论法则画图
    gradient 近似梯度
    gray 黑白灰度
    grid 画分格线
    griddata 规则化数据和曲面拟合
    gtext 由鼠标放置注释文字
    guide 启动图形用户界面交互设计工具


    H h

    harmmean 调和平均值
    help 在线帮助
    helpwin 交互式在线帮助
    helpdesk 打开超文本形式用户指南
    hex2dec 十六进制转换为十进制
    hex2num 十六进制转换为浮点数
    hidden 透视和消隐开关
    hilb Hilbert矩阵
    hist 频数计算或频数直方图
    histc 端点定位频数直方图
    histfit 带正态拟合的频数直方图
    hold 当前图上重画的切换开关
    horner 分解成嵌套形式
    hot 黑红黄白色图
    hsv 饱和色图


    I i

    if-else-elseif 条件分支结构
    ifft 离散Fourier反变换
    ifft2 二维离散Fourier反变换
    ifftn 高维离散Fourier反变换
    ifftshift 直流分量对中的谱的反操作
    ifourier Fourier反变换
    i, j 缺省的”虚单元”变量
    ilaplace Laplace反变换
    imag 复数虚部
    image 显示图象
    imagesc 显示亮度图象
    imfinfo 获取图形文件信息
    imread 从文件读取图象
    imwrite 把
    imwrite 把图象写成文件
    ind2sub 单下标转变为多下标
    inf 无穷大
    info MathWorks公司网点地址
    inline 构造内联函数对象
    inmem 列出内存中的函数名
    input 提示用户输入
    inputname 输入宗量名
    int 符号积分
    int2str 把整数数组转换为串数组
    interp1 一维插值
    interp2 二维插值
    interp3 三维插值
    interpn N维插值
    interpft 利用FFT插值
    intro Matlab自带的入门引导
    inv 求矩阵逆
    invhilb Hilbert矩阵的准确逆
    ipermute 广义反转置
    isa 检测是否给定类的对象
    ischar 若是字符串则为真
    isequal 若两数组相同则为真
    isempty 若是空阵则为真
    isfinite 若全部元素都有限则为真
    isfield 若是构架域则为真
    isglobal 若是全局变量则为真
    ishandle 若是图形句柄则为真
    ishold 若当前图形处于保留状态则为真
    isieee 若计算机执行IEEE规则则为真
    isinf 若是无穷数据则为真
    isletter 若是英文字母则为真
    islogical 若是逻辑数组则为真
    ismember 检查是否属于指定集
    isnan 若是非数则为真
    isnumeric 若是数值数组则为真
    isobject 若是对象则为真
    isprime 若是质数则为真
    isreal 若是实数则为真
    isspace 若是空格则为真
    issparse 若是稀疏矩阵则为真
    isstruct 若是构架则为真
    isstudent 若是Matlab学生版则为真
    iztrans 符号计算Z反变换


    J j , K k

    jacobian 符号计算中求Jacobian 矩阵
    jet 蓝头红尾饱和色
    jordan 符号计算中获得 Jordan标准型
    keyboard 键盘获得控制权
    kron Kronecker乘法规则产生的数组


    L l

    laplace Laplace变换
    lasterr 显示最新出错信息
    lastwarn 显示最新警告信息
    leastsq 解非线性最小二乘问题(旧版)
    legend 图形图例
    lighting 照明模式
    line 创建线对象
    lines 采用plot 画线色
    linmod 获连续系统的线性化模型
    linmod2 获连续系统的线性化精良模型
    linspace 线性等分向量
    ln 矩阵自然对数
    load 从MAT文件读取变量
    log 自然对数
    log10 常用对数
    log2 底为2的对数
    loglog 双对数刻度图形
    logm 矩阵对数
    logspace 对数分度向量
    lookfor 按关键字搜索M文件
    lower 转换为小写字母
    lsqnonlin 解非线性最小二乘问题
    lu LU分解


    M m

    mad 平均绝对值偏差
    magic 魔方阵
    maple &nb, sp; 运作 Maple格式指令
    mat2str 把数值数组转换成输入形态串数组
    material 材料反射模式
    max 找向量中最大元素
    mbuild 产生EXE文件编译环境的预设置指令
    mcc 创建MEX或EXE文件的编译指令
    mean 求向量元素的平均值
    median 求中位数
    menuedit 启动设计用户菜单的交互式编辑工具
    mesh 网线图
    meshz 垂帘网线图
    meshgrid 产生”格点”矩阵
    methods 获知对指定类定义的所有方法函数
    mex 产生MEX文件编译环境的预设置指令
    mfunlis 能被mfun计算的MAPLE经典函数列表
    mhelp 引出 Maple的在线帮助
    min 找向量中最小元素
    mkdir 创建目录
    mkpp 逐段多项式数据的明晰化
    mod 模运算
    more 指令窗中内容的分页显示
    movie 放映影片动画
    moviein 影片帧画面的内存预置
    mtaylor 符号计算多变量Taylor级数展开


    N n

    ndims 求数组维数
    NaN 非数(预定义)变量
    nargchk 输入宗量数验证
    nargin 函数输入宗量数
    nargout 函数输出宗量数
    ndgrid 产生高维格点矩阵
    newplot 准备新的缺省图、轴
    nextpow2 取最接近的较大2次幂
    nnz 矩阵的非零元素总数
    nonzeros 矩阵的非零元素
    norm 矩阵或向量范数
    normcdf 正态分布累计概率密度函数
    normest 估计矩阵2范数
    norminv 正态分布逆累计概率密度函数
    normpdf 正态分布概率密度函数
    normrnd 正态随机数发生器
    notebook 启动Matlab和Word的集成环境
    null 零空间
    num2str 把非整数数组转换为串
    numden 获取最小公分母和相应的分子表达式
    nzmax 指定存放非零元素所需内存


    O o

    ode1 非Stiff 微分方程变步长解算器
    ode15s Stiff 微分方程变步长解算器
    ode23t 适度Stiff 微分方程解算器
    ode23tb Stiff 微分方程解算器
    ode45 非Stiff 微分方程变步长解算器
    odefile ODE 文件模板
    odeget 获知ODE 选项设置参数
    odephas2 ODE 输出函数的二维相平面图
    odephas3 ODE 输出函数的三维相空间图
    odeplot ODE 输出函数的时间轨迹图
    odeprint 在Matlab指令窗显示结果
    odeset 创建或改写 ODE选项构架参数值
    ones 全1数组
    optimset 创建或改写优化泛函指令的选项参数值
    orient 设定图形的排放方式
    orth 值空间正交化


    P p

    pack 收集Matlab内存碎块扩大内存
    pagedlg 调出图形排版对话框
    patch 创建块对象
    path 设置Matlab搜索路径的指令
    pathtool 搜索路径管理器
    pause 暂停
    pcode 创建预解译P码文件
    pcolor 伪彩图
    peaks Matlab提供的典型三维曲面
    permute 广义转置
    pi (预定义变量)圆周率
    pie 二维饼图
    pie3 三维饼图
    pink 粉红色图矩阵
    pinv 伪逆
    plot 平面线图
    plot3 三维线图
    plotmatrix 矩阵的散点图
    plotyy 双纵坐标图
    poissinv 泊松分布逆累计概率分布函数
    poissrnd 泊松分布随机数发生器
    pol2cart 极或柱坐标变为直角坐标
    polar 极坐标图
    poly 矩阵的特征多项式、根集对应的多项式
    poly2str 以习惯方式显示多项式
    poly2sym 双精度多项式系数转变为向量符号多项式
    polyder 多项式导数
    polyfit 数据的多项式拟合
    polyval 计算多项式的值
    polyvalm 计算矩阵多项式
    pow2 2的幂
    ppval 计算分段多项式
    pretty 以习惯方式显示符号表达式
    print 打印图形或SIMULINK模型
    printsys 以习惯方式显示有理分式
    prism 光谱色图矩阵
    procread 向MAPLE输送计算程序
    profile 函数文件性能评估器
    propedit 图形对象属性编辑器
    pwd 显示当前工作目录


    Q q

    quad 低阶法计算数值积分
    quad8 高阶法计算数值积分(QUADL)
    quit 推出Matlab 环境
    quiver 二维方向箭头图
    quiver3 三维方向箭头图


    R r

    rand 产生均匀分布随机数
    randn 产生正态分布随机数
    randperm 随机置换向量
    range 样本极差
    rank 矩阵的秩
    rats 有理输出
    rcond 矩阵倒条件数估计
    real 复数的实部
    reallog 在实数域内计算自然对数
    realpow 在实数域内计算乘方
    realsqrt 在实数域内计算平方根
    realmax 最大正浮点数
    realmin 最小正浮点数
    rectangle 画”长方框”
    rem 求余数
    repmat 铺放模块数组
    reshape 改变数组维数、大小
    residue 部分分式展开
    return 返回
    ribbon 把二维曲线画成三维彩带图
    rmfield 删去构架的域
    roots 求多项式的根
    rose 数扇形图
    rot90 矩阵旋转90度
    rotate 指定的原点和方向旋转
    rotate3d 启动三维图形视角的交互设置功能
    round 向最近整数圆整
    rref 简化矩阵为梯形形式
    rsf2csf 实数块对角阵转为复数特征值对角阵
    rsums Riemann和

    S s

    save 把内存变量保存为文件
    scatter 散点图
    scatter3 三维散点图
    sec 正割
    sech 双曲正割
    semilogx X轴对数刻度坐标图
    semilogy Y轴对数刻度坐标图
    series 串联连接
    set 设置图形对象属性
    setfield 设置构架数组的域
    setstr 将ASCII码转换为字符的旧版指令
    sign 根据符号取值函数
    signum 符号计算中的符号取值函数
    sim 运行SIMULINK模型
    simget 获取SIMULINK模型设置的仿真参数
    simple 寻找最短形式的符号解
    simplify 符号计算中进行简化操作
    simset 对SIMULINK模型的仿真参数进行设置
    simulink 启动SIMULINK模块库浏览器
    sin 正弦
    sinh 双曲正弦
    size 矩阵的大小
    slice 立体切片图
    solve 求代数方程的符号解
    spalloc 为非零元素配置内存
    sparse 创建稀疏矩阵
    spconvert 把外部数据转换为稀疏矩阵
    spdiags 稀疏对角阵
    spfun 求非零元素的函数值
    sph2cart 球坐标变为直角坐标
    sphere 产生球面
    spinmap 色图彩色的周期变化
    spline 样条插值
    spones 用1置换非零元素
    sprandsym 稀疏随机对称阵
    sprank 结构秩
    spring 紫黄调春色图
    sprintf 把格式数据写成串
    spy 画稀疏结构图
    sqrt 平方根
    sqrtm 方根矩阵
    squeeze 删去大小为1的”孤维”
    sscanf 按指定格式读串
    stairs 阶梯图
    std 标准差
    stem 二维杆图
    step 阶跃响应指令
    str2double 串转换为双精度值
    str2mat 创建多行串数组
    str2num 串转换为数
    strcat 接成长串
    strcmp 串比较
    strjust 串对齐
    strmatch 搜索指定串
    strncmp 串中前若干字符比较
    strrep 串替换
    strtok 寻找第一间隔符前的内容
    struct 创建构架数组
    struct2cell 把构架转换为元胞数组
    strvcat 创建多行串数组
    sub2ind 多下标转换为单下标
    subexpr 通过子表达式重写符号对象
    subplot 创建子图
    subs 符号计算中的符号变量置换
    subspace 两子空间夹角
    sum 元素和
    summer 绿黄调夏色图
    superiorto 设定优先级
    surf 三维着色表面图
    surface 创建面对象
    surfc 带等位线的表面图
    surfl 带光照的三维表面图
    surfnorm 空间表面的法线
    svd 奇异值分解
    svds 求指定的若干奇异值
    switch-case-otherwise 多分支结构
    sym2poly 符号多项式转变为双精度多项式系数向量
    symmmd 对称最小度排序
    symrcm 反向Cuthill-McKee排序
    syms 创建多个符号对象
     
    T t

    tan 正切
    tanh 双曲正切
    taylortool 进行Taylor逼近分析的交互界面
    text 文字注释
    tf 创建传递函数对象
    tic 启动计时器
    title 图名
    toc 关闭计时器
    trapz 梯形法数值积分
    treelayout 展开树、林
    treeplot 画树图
    tril 下三角阵
    trim 求系统平衡点
    trimesh 不规则格点网线图
    trisurf 不规则格点表面图 triu 上三角阵 try-catch 控制流中的Try-catch结构 type 显示M文件
    U u
    uicontextmenu 创建现场菜单
    uicontrol 创建用户控件
    uimenu 创建用户菜单
    unmkpp 逐段多项式数据的反明晰化
    unwrap 自然态相角
    upper 转换为大写字母


    V v

    var 方差
    varargin 变长度输入宗量
    varargout 变长度输出宗量
    vectorize 使串表达式或内联函数适于数组运算
    ver 版本信息的获取
    view 三维图形的视角控制
    voronoi Voronoi多边形
    vpa 任意精度(符号类)数值


    W w

    warning 显示警告信息
    what 列出当前目录上的文件
    whatsnew 显示Matlab中 Readme文件的内容
    which 确定函数、文件的位置
    while 控制流中的While环结构
    white 全白色图矩阵
    whitebg 指定轴的背景色
    who 列出内存中的变量名
    whos 列出内存中变量的详细信息
    winter 蓝绿调冬色图
    workspace 启动内存浏览器


    X x , Y y , Z z

    xlabel X轴名
    xor 或非逻辑
    yesinput 智能输入指令
    ylabel Y轴名
    zeros 全零数组
    zlabel Z轴名
    zoom 图形的变焦放大和缩小
    ztrans 符号计算Z变换
                </div>
    
    展开全文
  • 损失函数总结

    千次阅读 2018-08-08 22:09:41
    它是个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。 损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以...

    损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,衡量模型预测的好坏。它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

    损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

    其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θ值。

    下面主要列出几种常见的损失函数。

    一、log对数损失函数(逻辑回归):

    log损失函数的标准形式:

    在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值

    把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数。从损失函数的视角来看,它就成了log损失函数

    取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值

    因此在前面加上负号之后,就等价于最小化损失函数了

     

    二、平方损失函数(最小二乘法, Ordinary Least Squares )

    最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。

    换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离

     

    为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:

    * 简单,计算方便;

    * 欧氏距离是一种很好的相似性度量标准;

    * 在不同的表示域变换后特征性质不变。

    平方损失(Square loss)的标准形式如下:

    当样本个数为n时,此时的损失函数变为:

    Y-f(X)表示的是残差,整个式子表示的是残差的平方和,而我们的目的就是最小化这个目标函数值(注:该式子未加入正则项),也就是最小化残差的平方和(residual sum of squares,RSS)。

    而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,公式如下:

    三、指数损失函数(Adaboost)

    常用在Adaboost之中

    在Adaboost中,经过m此迭代之后,可以得到fm(x):

    Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数α 和G:

    而指数损失函数(exp-loss)的标准形式如下

    可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:

    四、Hinge损失函数(SVM)

    Hinge 损失函数的标准形式

    y^为预测值,在-1到1之间,y为目标值(-1或1)。

    五、其它损失函数

    除了以上这几种损失函数,常用的还有:0-1损失是指,预测值和目标值不相等为1,否则为0:

    0-1损失函数:(注意是不相等时为1,相等时为0)

    绝对值损失函数

     

    参数越多,模型越复杂,而越复杂的模型越容易过拟合。过拟合就是说模型在训练数据上的效果远远好于在测试集上的性能。此时可以考虑正则化,来权衡损失函数和正则项,减小参数规模,达到模型简化的目的,从而使模型具有更好的泛化能力。

     

    机器学习中的目标函数、损失函数、代价函数有什么区别?

     

    损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。

    上面三个图的函数依次为 f1(x) ,f2(x)  ,f3(x)  。我们是想用这三个函数分别来拟合Price,Price的真实值记为 Y 。
    我们给定  x,这三个函数都会输出一个f(x)  ,这个输出的 f(x) 与真实值 y 可能是相同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度,比如:


    这个函数就称为损失函数(loss function),或者叫代价函数(cost function)。损失函数越小,就代表模型拟合的越好。

     

    那是不是我们的目标就只是让loss function越小越好呢?

    答案是否定的

    f(x)  关于训练集的平均损失称作经验风险(empirical risk),即  ,所以我们的目标就是最小化  ,称为经验风险最小化。

    如果到这一步就完了的话,那我们看上面的图,那肯定是最右面的 f3(x) 的经验风险函数最小了,因为它对历史的数据拟合的最好。但是我们从图上来看f3(x) 肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)。

    为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。这个时候就定义了一个函数 J(f) ,这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有 L1 ,L2  范数。

     

    到这一步我们就可以说我们最终的优化函数是,即最优化经验风险和结构风险,而这个函数就被称为目标函数。

    此时结构化风险的定义为

     

    结合上面的例子来分析:最左面的 f1(x)结构风险最小(模型结构最简单),但是经验风险最大(对历史数据拟合的最差);最右面的f3(x)  经验风险最小(对历史数据拟合的最好),但是结构风险最大(模型结构最复杂);而 f2(x) 达到了二者的良好平衡,最适合用来预测未知数据集。

     

    展开全文
  • 神经网络的激活函数总结

    万次阅读 2018-06-22 16:19:07
    如果不用激活函数(即相当于激活函数为f(x)=x),在这种情况下,网络的每层的输入都是上层的线性输出,因此,无论该神经网络有多少层,最终的输出都是输入的线性组合,与没有隐藏层的效果相当,这种情况就是最...

    转载自:https://my.oschina.net/amui/blog/1633904

    激活函数的意义(需要激活函数的理由)

    激活函数是神经网络的一个重要组成部分。如果不用激活函数(即相当于激活函数为f(x)=x),在这种情况下,网络的每一层的输入都是上一层的线性输出,因此,无论该神经网络有多少层,最终的输出都是输入的线性组合,与没有隐藏层的效果相当,这种情况就是最原始的感知机。

    正因为上面的原因,才需要引入非线性函数作为激活函数,这样深层神经网络才有意义,输出不再是输入的线性组合,就可以逼近任意函数。

    各类激活函数的优缺点

    绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分的)。此外,复杂的激活函数也许产生一些梯度消失或爆炸的问题。因此,神经网络倾向于部署若干个特定的激活函数。

     

    Identity


    通过激活函数 Identity,节点的输入等于输出。它完美适合于潜在行为是线性(与线性回归相似)的任务。当存在非线性,单独使用该激活函数是不够的,但它依然可以在最终输出节点上作为激活函数用于回归任务。

     

    Sigmoid函数

    Sigmoid函数,也就是logistic函数,对于任意输入,它的输出范围都是(0,1)。公式如下:



    Sigmoid的函数图如上所示,很像平滑版的阶跃函数。但是,sigmoid 有很多好处,例如:

            1. 它是非线性的

            2. 不同于二值化输出,sigmoid 可以输入 0 到 1 之间的任意值。对,跟你猜的一样,这可以用来表示概率值。

            3. 与 2 相关,sigmoid 的输出值在一个范围内,这意味着它不会输出无穷大的数。

    但是,sigmoid 激活函数并不完美:

    梯度消失。如前面的图片所示,当输入值 z 趋近负无穷时,sigmoid 函数的输出几乎为 0 . 相反,当输入 z 趋近正无穷时,输出值几乎为 1 . 那么这意味着什么?

    在这两个极端情况下,对应的梯度很小,甚至消失了。梯度消失在深度学习中是一个十分重要的问题,我们在深度网络中加了很多层这样的非线性激活函数,这样的话,即使第一层的参数有很大的变化,也不会对输出有太大的影响。换句话讲,就是网络不再学习了,通常训练模型的过程会变得越来越慢,尤其是使用梯度下降算法时。

    sigmoid 的另一个弊端就是实际运用中指数运算开销太大。尽管有人说,与矩阵乘法或卷积相比,激活函数在深度网络的计算是非常小的一部分,所以这可能不会成为一个大问题。不过,我认为这值得一提。

     

    Tanh函数

    Tanh 或双曲正切是另一个深度神经网络中常用的激活函数。类似于 sigmoid 函数,它也将输入转化到良好的输出范围内。具体点说就是对于任意输入,tanh 将会产生一个介于 -1 与 1 之间的值。



    Tanh函数图

    如前面提及的,tanh 激活函数有点像 sigmoid 函数。非线性且输出在某一范围,此处为 (-1, 1)。不必意外,它也有跟 sigmoid 一样的缺点。从数学表达式就可以看出来,它也有梯度消失的问题,以及也需要进行开销巨大的指数运算。

     

    ReLU

    终于讲到了 Relu,人们起初并不觉得它的效果会好过 sigmoid 和 tanh。但是,实战中它确实做到了。事实上,cs231n 课程甚至指出,应该默认使用 Relu 函数。

     

    ReLU 从数学表达式来看,运算十分高效。对于某一输入,当它小于 0 时,输出为 0,否则不变。下面是 ReLU 的函数表达式。Relu(z) = max(0,z)


    那么你可能会问,「它是线性函数吧?为何我们说它是非线性函数?」

    在线代中,线性函数就是两个向量空间进行向量加和标量乘的映射。


    给定上面的定义,我们知道 max(0, x) 是一个分段线性函数。之所以说是分段线性,是因为它在 (−∞, 0] 或 [0,+∞) 上符合线性函数的定义。但是在整个定义域上并不满足线性函数的定义。例如f(−1) + f(1) ≠f (0)

    所以 Relu 就是一个非线性激活函数且有良好的数学性质,并且比 sigmoid 和 tanh 都运算得快。除此以外,Relu 还因避免了梯度消失问题而闻名。然而,ReLU 有一个致命缺点,叫「ReLU 坏死」。ReLu 坏死是指网络中的神经元由于无法在正向传播中起作用而永久死亡的现象。

    更确切地说,当神经元在向前传递中激活函数输出为零时,就会出现这个问题,导致它的权值将得到零梯度。因此,当我们进行反向传播时,神经元的权重将永远不会被更新,而特定的神经元将永远不会被激活。

    还有件事值得一提。你可能注意到,不像 sigmoid 和 tanh,Relu 并未限定输出范围。这通常会成为一个很大的问题,它可能在另一个深度学习模型如递归神经网络(RNN)中成为麻烦。具体而言,由 ReLU 生成的无界值可能使 RNN 内的计算在没有合理的权重的情况下发生数值爆炸。因此反向传播期间权重在错误方向上的轻微变化都会在正向传递过程中显著放大激活值,如此一来学习过程可能就非常不稳定。我会尝试在下一篇博客文章中详细介绍这一点。

     

    Leak ReLU


    经典(以及广泛使用的)ReLU 激活函数的变体,带泄露修正线性单元(Leaky ReLU)的输出对负值输入有很小的坡度。由于导数总是不为零,这能减少静默神经元的出现,允许基于梯度的学习(虽然会很慢)。

    Cos


    如同正弦函数,余弦激活函数(Cos/Cosine)为神经网络引入了周期性。它的值域为 [-1,1],且导数处处连续。和 Sinusoid 函数不同,余弦函数为不以零点对称的偶函数。
     

    Sinc


    Sinc 函数(全称是 Cardinal Sine)在信号处理中尤为重要,因为它表征了矩形函数的傅立叶变换(Fourier transform)。作为一种激活函数,它的优势在于处处可微和对称的特性,不过它比较容易产生梯度消失的问题。


    展开全文
  • 总结6:构造/析构 函数

    千次阅读 2020-07-02 13:02:10
    1. 概念 1.1 构造函数 定义:与类名相同的特殊成员函数 ...语法: ClassName();...特点: ①.... ②....调用方式: 一般情况下C++编译器会自动调用构造函数, 在一些情况下则需要手工调用构造函数 c..

    本文PDF下载站点: https://github.com/MrWang522/Private-Document.git


    1. 概念

    1.1 构造函数

    • 定义:与类名相同的特殊成员函数

    • 语法: ClassName();

    • 作用:完成对属性的初始化

    • 特点: ①. 在定义时可以有参数,也可没有参数         ②. 没有任何返回类型的声明

    • 调用方式: 一般情况下C++编译器会自动调用构造函数, 在一些情况下则需要手工调用构造函数

    class MyTest{
    public:
    	MyTest() {}   // 构造函数: 定义对象时,自动调用该函数,完成对属性的初始化
    	~MyTest() {}  // 析构函数:对象声明周期结束时,自动调用该函数,释放对象占用的空间
    };
    

    1.2 析构函数

    • 定义:在构造函数名前加 ~ 的特殊成员函数

    • 语法: ~ClassName();

    • 作用:对象销毁时,自动被调用,用来释放对象占用的空间

    • 特点: ①. 声明的析构函数 没有参数 没有任何返回类型         ②. 在对象销毁时自动被调用

    • 调用方式: 被C++编译器自动调用

    • 注意(重点!!! ):先定义的对象 后析构

    2. 构造函数分类

    1. 默认构造函数
    2. 无参数构造函数
    3. 带参数构造函数
    4. 拷贝构造函数

    class Test{
    public:
    	Test(){ 		// 1. 无参数构造函数
    		m_a = 0;	m_b = 0;	m_c = 0;
    	}
    	Test(int a){ 	// 2. 有参数构造函数 1个参数
    		m_a = a;
    	}
    	Test(int a, int b, int c){ 	// 2. 有参数构造函数  3个参数
    		m_a = a;	m_b = b;	m_c = c
    	}
    
    	Test(const Test& obj ){ 	// 3 . 拷贝构造函数
    		/* ... ... */
    	}
    private:
    	int m_a, m_b, m_c;
    };
    

    2.1 默认构造函数

    • 默认 无参 构造函数: 当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且其函数体为空
    • 默认 拷贝 构造函数: 当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函数,简单的进行成员变量的值复制(浅拷贝)

    2.2 无参构造函数

    Test t1;   // 直接调用 无参数构造函数  --> 属性初始化值为: m_a = 0;  m_b = 0; m_c = 0;
    

    2.3 有参构造函数

    注意:对象初始化 和 对象赋值是两个不同的概念 !!!

    /* 1. 括号法 自动调用 */
    Test t2(1, 2, 3);    // 直接调用三个参数的构造函数: --> 属性初始化值为: m_a = 1;  m_b = 2; m_c = 3;
    
    /* 2. 等号法 自动调用 */
    Test t3 = (1, 2);    // 直接调用一个参数的构造函数: --> 属性初始化值为: m_a = 2;  注意:C++等号符功能加强!!!直接取最后一个参数
    Test t4 = (1, 2, 3); // 直接调用三个参数的构造函数: --> 属性初始化值为: m_a = 1;  m_b = 2; m_c = 3;
    
    /* 3. 手动调用 初始化操作 */
    Test t5 = Test(1, 2, 3);  // 产生匿名对象, 赋给t5, 但只调用一次构造函数, 原因是把匿名对象那块地址 直接命名为t5 !!!
    

    2.4 拷贝构造函数

    作用:用一个对象 去 初始化另外一个对象

    class Test{
    public:
    	Test(int a, int b){     // 1. 有参数构造函数  2个参数
    		m_a = a;	m_b = b;
    	}
    
    	Test(const Test& obj ){ // 2 . 拷贝构造函数
        	m_a = obj.m_a;	m_b = obj.m_b;    
    	}
    private:
    	int m_a, m_b;
    };
    
    void MyTest_03(Test mp){ 	// 第三种调用测试
        /* ... ... */
    }
    
    Test MyTest_04(){ 			// 第四种调用测试
        Test tmp(1, 2);
        return tmp;    // *******重点!!! 返回一个匿名对象 返回时调用 一次拷贝构造函数(构造的是匿名对象) 在进行一次析构函数(析构的是tmp)
    }
    
    void main(){
        Test a(1, 2);
        
        /* 第一种调用:直接调用 */
        Test b = a;   	// 1. 不会调用普通构造含糊 直接调用拷贝构造函数!!!
        // t1 = t2; --> 不会调用拷贝构造函数 这种写法是操作符重载
        
        /* 第二种调用:直接调用 */
        Test c(a); 		// 2. 与上边一样 只是写法不同 
        
        /* 第三种调用:类的形参初始化 */ 
    	MyTest_03(a);	// 3. 此时会调用拷贝构造函数 该函数执行完毕后 调用形参参数的析构函数
        
        /* 第四种调用:函数返回类的匿名对象 */
        Test d = MyTest_04(); 	//  4. 该函数返回了一个匿名对象 使用了匿名对象时 直接把d 的名字给匿名对象(地址不会改变)
        a = MyTest_04();        //     因为 a 已经被定义,此时匿名对象未使用,则直接调用匿名对象的析构函数
    }
    

    3. 构造函数的规则

    • 当类中定义了 有参/无参构造 函数时, C++编译器 不会提供 默认的构造函数
    • 当类中定义了 拷贝构造 函数时,C++编译器 不会提供 默认的构造函数
    • 默认拷贝构造函数成员变量简单赋值(浅拷贝)

    4. 浅/深 拷贝

    • 浅拷贝: 默认拷贝构造函数 可以完成 对象的数据成员值 简单地复制
    • 深拷贝: 对象的属性 有指针 指示的堆时,需要 显式定义 拷贝构造函数(自定义)

    4.1 浅拷贝

    class MyClass{
    public:    
        MyClass(const char *sp){
            m_cp = (char *)malloc(strlen(sp) + 1);  // 需要末尾添加 \n ,所以此处 +1
            strcpy(m_cp, sp);
        }
        
        /* 编译器 自动提供一个默认的拷贝构造函数 */
        
     	~MyClass(){ 
            if(m_cp != NULL){
                free(m_cp);
                m_cp = NULL;
            }
        }  
    private:
    	char *m_cp;   
    }
    
    void Test(){
        MyClass p1("home"), p3;
    	MyClass p2 = p1;    // 1. 此处进行默认的拷贝 但是 运行时候会造成 断错误, 原因如下图
        p3 = p1;            // 2. 操作运算符重载 使用默认的运算符重载 也会 存在这样的问题 造成段错误
    }
    

     浅拷贝

    注意(重点!!! ):操作运算符重载 使用 默认的运算符重载 (浅拷贝) 也会段错误


    4.2 深拷贝

    class MyClass{
    public:    
        MyClass(const char *sp){
            m_cp = (char *)malloc(strlen(sp) + 1);  // 需要末尾添加 \n ,所以此处 +1
            strcpy(m_cp, sp);
        }
        
     	MyClass(const Name& obj1){ 					// 自定义拷贝构造函数完成深拷贝
    		m_cp = (char *)malloc(strlen(bj1.m_cp) + 1); 
    		strcpy(m_cp, obj1.m_cp);
    	}   
        
     	~MyClass(){ 
            if(m_cp != NULL){
                free(m_cp);
                m_cp = NULL;
            }
        }  
    private:
    	char *m_cp;   
    }
    
    void Test(){
        MyClass p1("home"), p3;
    	MyClass p2 = p1;    	// 这样就解决了这个问题
    }
    


    5. 构造 初始化列表

    5.1 语法规则

    构造函数初始化列表以一个冒号开始, 以逗号分隔的数据成员列表, 每个数据成员后面跟一个放在括号中的初始化式(所赋的参数)

    class CExample {
    public:
        CExample(): a(0),b(8.8) {} /* 构造函数初始化列表 */
        CExample(){ a=0; b=8.8; }  /* 构造函数内部赋值 */
    private:
        int a; float b;
    };
    

    5.2 必须 使用初始化列表 情景

    • 情景1: 成员类型是 没有默认构造函数的类,若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。
    class A {
    public:
        A(int a) {m_a = a}
    private:
        int m_a; 
    };
    
    class B {
    public:     /* 编译器提供默认构造函数 */
    private:
        A m_b; 
    };
    
    void Test(){
        B obj;      // 编译出错!!! 原因:没有机会初始化 B 类 
    }
    
    • 情景2: const 成员 引用类型 的成员。因为 const 对象或引用类型只能初始化,不能对他们赋值。
    class CExample {
    public:
        CExample(): a(0),b(8.8) {} 
    private:
        int m_a; const float m_fb;
    };
    

    5.3 成员变量的初始化顺序

    • 成员变量的初始化顺序 与 声明的顺序 相关,与在 初始化列表中的顺序 无关(重点!!!)
    class CExample {
    public:
        CExample(): a(0),b(8.8) {} /* 构造函数初始化列表 与初始化列表顺序无关 */
    private:
        float b; int a;    /* 先初始化b 再初始化a 与声明顺序有关 */
    };
    

    6. 构造函数中调用构造函数

    说明: 构造函数 中 调用构造函数 是 不可取 ( 危险 ) 的!!!

    class Test{
    public:
    	Test(int a, int b, int c){
    		this->a = a;	this->b = b;	this->c = c;
    	}
    	Test(int a, int b){
    		this->a = a;	this->b = b;
    		Test(a, b, 100);  // 产生新的匿名对象, 对原有的 属性并无影响,并且执行完此函数后 匿名对象被析构
    	}
    private:
        int a, b, c; 
    }
    
    void MyTest(){
        Test x(1, 2);
        cout << "c的值为?" << endl;		// C的值是 随机值!! 
    }
    
    • 运行结果: C的值是 随机值 (没有赋初值)
    • 原因: 构造 调用 构造, 产生了新的匿名对象, 对原有的 属性并无影响

    7. 匿名对象的生命周期

    class Test{
    public:
    	Test(int a, int b, int c){
    		this->a = a;	this->b = b;	this->c = c;
    	}
    	~Test(){}
    private:
        int a, b, c; 
    }
    
    void MyTest(){
        Test(1, 2, 3); 			 	// 直产生匿名对象  --> 先调用一次 构造函数   紧接着在调用析构函数
        Test aa = Test(1, 2, 3);  	// 先调用一次 构造函数 然后将aa名字赋给匿名对象地址(编译器自动优化) aa生命周期结束后 在调用析构
    }
    

    写文不易 且行且珍惜
    MrWang
    展开全文
  • R语言函数总结

    万次阅读 多人点赞 2018-06-20 10:15:44
    不过,个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字。基本命令要么是表达式(expressions)要么就是 赋值(assignments)。命令可以被 (;)隔开,或者另起行。基本命令可以通过大...
  • Loss Functions for Image Restoration with Neural Networks摘要损失函数L1 LossSSIM LossMS-SSIM Loss最好的选择:MS-SSIM + L1 Loss结果讨论损失函数的收敛性SSIM和MS-SSIM的表现 该论文发表于 IEEE Transactions...
  • opencv常用函数总结

    千次阅读 2015-06-04 11:50:40
    转自:... 1) IplImage* cvCreateImage( CvSize size, int depth, int channels );    cvCreateImage是openCV中的函数。OpenCV是Intel公司支
  • 机器学习中的损失函数总结

    千次阅读 2017-06-03 18:20:19
    损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构...
  • 高中数学必修一函数知识点总结

    千次阅读 2019-02-23 16:02:43
    同学们,今天开始讲解函数章节学习,函数这章极其重要,因为函数是高中数学重要的枢纽章节,高中数学除了立体几何和概率统计和函数没有关系...函数先看他的树枝,第个点要了解函数定义讲完,讲解函数三要素(...
  • 构造函数与拷贝构造函数

    千次阅读 多人点赞 2019-04-03 09:07:15
    拷贝构造函数构造函数不能分开说,他们都是初始化对象的种方法。但是我们这里用构造函数辅助说明拷贝构造函数,主要说说拷贝构造函数的声明,用途和使用注意事项。 众所周知,构造函数个初始化类对象的函数...
  • 数据结构图总结

    千次阅读 2018-05-12 17:24:15
    1.的术语与定义 的定义 由顶点集V(G)和边集E(G)组成,记为G=(V,E)。其中E(G)是边的有限集合,边是顶点的无序对(无向)或有序对(有向)。 对有向来说,E(G)是有向边(也称弧(Arc))的有限...
  • VC++深入详解的函数总结

    千次阅读 2016-02-13 20:12:53
    在许多VC教科书中这些函数/方法、结构、宏等比较常见,觉得比较重要,虽然不用记住,但应该知道,所以列举出来,没写出参数和返回值情况,编写程序时还需仔细查看MSDN文档。 CSize说明个矩形的高和宽,调用CDC:...
  • 以上就是基本的激活函数类型,虽然理论上可以将他们混合使用,但是基本没有这么干的,这里再一次粘一下几个激活函数的样子: 有时候选择太多也很让人纠结,我们该如何选择呢? 使用ReLU吧. 但是要注意...
  • 应用场景:对方法仅调用一次时。 2,封装。 引出:函数,类都是封装体。 好处:1,复用性,2,隐藏细节,对外提供访问方式。3,安全性。 封装的体系之一:私有。 不需要对外提供的都私有化。 尤其是...
  • Excel常用公式与函数总结(Excel 2010)

    千次阅读 2019-02-10 21:53:56
     在Excel中输入函数时是不区分大小写的,无论是大写还是小写,结束函数编辑时,Excel会自动转化为大写。对于函数中的参数,当参数是文本时,要用双引号引起来,单纯的数字不需要加双引号,除非这个数字是文本性数字...
  • http://www.cnblogs.com/rgvb178/p/6055213.html类似,但也值得看。转自:http://blog.csdn.net/losteng/article/details/50833861激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。常用激活函数...
  • 总结各类损失函数

    千次阅读 2018-05-20 15:07:24
    由于有些图片挂了,并且CSDN不知道为什么富文本编辑无法显示Latex ...损失函数(Loss function)是用来估量你模型的预测值 f(x)f(x) 与真实值 YY 的不一致程度,它是个非负实值函数,通常用 L(Y,f(...
  • MFC定时器SetTimer函数用法总结

    万次阅读 多人点赞 2014-11-15 10:24:10
    CWnd类的SetTimer成员函数只能在CWnd类或其派生类中调用,而API函数SetTimer则没有这个限制,这是个很重要的区别。 1、启动定时器。  启动定时器就需要使用CWnd类的成员函数SetTimer。CWnd::SetTimer的原型如下...
  • 【R笔记】R语言函数总结

    千次阅读 多人点赞 2016-03-23 10:25:00
    不过,个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字。基本命令要么是表达式(expressions)要么就是 赋值(assignments)。命令可以被 (;)隔开,或者另起行。基本命令可以通过大...
  • 常用激活函数总结与比较

    千次阅读 2018-06-25 23:04:45
    什么是激活函数如下,在神经元中,输入的 inputs 通过加权,求和后,还被作用了函数,这个函数就是激活函数 Activation Function。2. 为什么要用如果不用激励函数,每层输出都是上层输入的线性函数,无论...
  • CDC绘图总结

    千次阅读 2012-03-14 17:10:59
    GDI总结:http://dingchaoqun12.blog.163.com/blog/static/11606250420112213396361/ 对话框 控件 视图类 应用程序框架都会调用该CWnd的消息响应成员函数(的覆盖)来绘制窗口客户区。 在Windows中,绘图一般在...
  • javascript的字符串处理函数总结

    千次阅读 2006-06-27 16:06:00
    字符串对象提供了许多方法,但是很少的程序设计人员充分利用...就象在Java中,它们不是作为系列的字符被存储的,所以字符串的操作必须使用内置的构造器和设置函数来完成。在后来的版本中有了字符串构造器和更多的关于
  • Seaborn常见绘图总结

    万次阅读 多人点赞 2019-01-24 15:52:55
    听“他们”说matplotlib中的seaborn绘图很好看而且实用,所以,这里系统的总结一下seaborn常见的图形绘制。其目的也是很简单的啦,方便我自己查看(英文很菜,每次都查单词……)。 差点忘了,这里使用的数据还是...
  • PHP常用函数归类总结【大全】

    万次阅读 多人点赞 2015-11-04 18:57:51
    函数归类总结, 学习了这么就PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,抽了个时间总结了一下,已做日后备查。 。PHP基础语法 变量,常量  严格区分大小写,但内置结构或关键字无所谓...
  • 样条函数插值(Cubic spline function interpolation)

    万次阅读 多人点赞 2019-05-23 11:36:01
    样条函数插值(Cubic spline function interpolation) 预备知识: 什么是插值? 已知离散的数据,但不知函数表达式,插值和拟合都是为了寻找函数表达式。区别在于,插值得到的函数能够穿过已知的点(在已知的...
  • 总结一下遇到的各种核函数

    千次阅读 2017-10-08 20:38:06
    总结一下遇到的各种核函数
  • 本文由@浅墨_毛星云出品,首发于...在基于物理的渲染中,几何函数(Geometry Function)是保证Microfacet BRDF理论上能量守恒,逻辑上自洽的重要环。其描述了微平面自阴影的属性,表示具有半矢量法线的微平面(...
  • 类的构造函数、析构函数与赋值函数 ... 每个类只有个析构函数个赋值函数,但可以有多个构造函数(包含个拷贝构造函数,其它的称为普通构造函数)。对于任意个类A,如果不想编写上述函数,C++编译
  • 本文由@浅墨_毛星云出品,首发于...作为基于物理的渲染(PBR)技术中材质高光质感的决定因素,更先进的法线分布函数(Normal Distribution Function,NDF)的问世和发展,是PBR能够在游戏和电影工业日益普及的重要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 270,398
精华内容 108,159
关键字:

一次函数总结结构图