zoukankan      html  css  js  c++  java
  • matlab 常用函数(数学建模-复习)

    常用函数

    • fscanf(fid, '%c', inf) -> 直接读取整个文件, 因为inf表示无穷

    • strtrim

    • char(num): 将num转为ASCII字符

    • strtok(content, delimiters)

    • regexprep(content, pattern, replacement): 正则表达式匹配并替换成指定的字符

    • lower: 小写字符

    • cumsum: 求紧邻累加和序列

    • eval: 将sym符号转换为数值

    • syms: 定义符号变量

    • dsolve: 求解常微分方程, 求出符合条件的一个函数

    • solve: 求解方程组, 可以偷懒了:-)

    • matlab中的''和""是不一样的, 建议以后使用"", 因为s = ["hello", "world"]和['hello', 'world']返回的结果是不一样

    • linprog -> 使用单纯形法计算出最小的最优解

      • 参数1: 目标函数的系数列向量

      • 参数2: 约束条件的系数矩阵

      • 参数3: 约束条件的值

      • 注意: 单纯形法使用求解最大的最优解的, 但是在MATLAB中只提供了linprog用来求最小最优解的, 所以在列出了单纯形法的形式之后, 在传入第一个参数的使用取反即可

      • 使用示例:

        
        z = [25; 30];
        A = [20 30; 5 4];
        b = [690; 120];
        [x\_1, x\_2] = linprog(-z, A, b);
        
    • randperm --> 类似于python中的shuffle

    • isempty --> 判断向量或者矩阵的是否为空(里面没有任何内容)

      • 参数1: vec 或者 matrix

      • 返回值:

        • 1: 表示为空
        • 0: 表示不为空
    • exist --> 判断变量是否存在

      • 直接上示例

        • exist('example', 'var'): 判断example这个变量是否存在,注意第二个参数不是乱写的,'var'表示变量
      • 注意:

        • 在matlab中peaks函数就使用了这个函数,所有我们可以直接调用peaks,而不需要传递参数
    • image 与 imagesc 函数 --> 显示一个图片,但是会自动的缩放尺寸

      • 参数1: 像素矩阵

      • 返回值:

        • Image 结构体
    • colormap 函数 --> 创建出一个figure,并且根据传入的参数来绘制对应的图片类型(rgb, grayscale)

      • 参数1:

        • 可以是gray, hot, jet中的其中一个,默认是jet
      • 注意:

        • 如果当前已经有了一个figure,则使用colormap会改变当前图片的维度(类型),一般是将RGB转为gray,使用colormap(gray)
    • axis image off --> 不显示坐标轴

    • meshgrid --> 返回网格矩阵

      • 参数1: X

      • 可选参数:

        • Y
      • 返回网格矩阵,下面通过例子,自己意会吧

        x = [1 2 3];
        y = [1 2 3];
        [xx, yy] = meshgrid(x, y)
        xx =
        
           1   2   3
           1   2   3
           1   2   3
        
        yy =
        
           1   1   1
           2   2   2
           3   3   3
        
        xx1 = meshgrid(x)
        xx1 =
        
           1   2   3
           1   2   3
           1   2   3
        
    • peaks 返回山顶数据X,Y,Z

      • 使用: [X, Y, Z] = peaks;
    • contour 函数 --> 画等高线 --> 如果要画封闭的曲线的,要联想到等高线,使用matlab中的contour函数进行绘制

      • 参数1: X

      • 参数2: Y

      • 参数3: Z

      • 可选参数:

        • number: 数字类型,表示显示的等高线的个数
        • range: [a, b], 表示只画出Z的值在[a, b]之间的等高线
        • 'ShowText', 'on': 在等高线上显示对应的Z的值,可以与range一起使用,帮助理解
      • 使用:

        • surf(X, Y, Z, [0, 1], 'ShowText', 'on');
    • type 指令 --> 列出函数的源码

    • surf 函数 --> 画出3D图

      • 参数1: X
      • 参数2: Y
      • 参数3: Z
    • xlim 和 ylim --> 设置图像中的x和y的定义域和值域

      • 参数1: start

      • 参数2: end

      • 额外:

        • axes函数
    • numel 函数 --> 返回向量或者矩阵中所有元素的个数

      • 参数1: matrix
      • 返回值:
        返回向量或者矩阵中所有元素的个数
    • logpace 函数 --> 返回行向量

      • 参数1: a

      • 参数2: b

      • 参数3: n

      • 返回值:

        • 返回一个在[(10^{a}), (10^{b})]之间有n个元素的行向量
    • linspace 函数 --> 返回行向量

      • 参数1: a

      • 参数2: b

      • 参数3: n

      • 返回值:

        • 返回一个在[a, b]之间有n个元素的行向量
    • spline 函数 --> 返回一个非矩阵形式的三阶样条的函数

      • 参数1: x

      • 参数2: y

      • 返回值:

        • 返回一个非矩阵形式的三阶样条的函数
      • 注意:

        • 获取返回值之后, 紧接着调用ppval(p, x)函数计算出函数结果
    • ppval 函数 --> 计算出多项式的结果

      • 参数1: p -> 非矩阵形式的函数

      • 参数2: x向量的值

      • 返回值:

        • 返回结果
    • poly2sym 函数 -> 将系数多项式转为符号多项式

      • 参数1: 一个系数多项式的向量

      • 返回值:

        • 一个符号多项式
    • conv 函数 -> 多项式乘法

      • 参数1: 第一个多项式向量

      • 参数2: 第二个多项式向量

      • 返回值:

        • 返回参数1和参数2进行多项式乘法之后得到的多项式的结果
    • max 函数 -> 计算出最大值

      • 参数1: 需要计算的矩阵

      • 参数2: 为[], 好像是一个表示位, 如果不写第二个参数则返回的就是一个向量, 但是如果写了[], 则还会返回一个最大值在原来的矩阵中对应的下标

      • 参数3: 1表示查找列中最大值, 2表示查找行中最大值

      • 返回值:

        • 如果第二个参数为[], 返回两个向量
        • 如果没有第二个参数, 返回的是一个向量
      • 建议:

        • 有时候忽略第二个参数会有问题, 尽量使用上第2个参数
    • min函数和max一样

    • reshape函数 -> 返回一个reshape后的矩阵

      • 参数1: 需要reshape的矩阵

      • 参数2: reshape成几行

      • 参数3: reshape成几列, 如果为[]则会根据参数2自动计算出列数, 如果我们划分的行和列不合理就会报错

      • 返回值

        • 一个reshape后的矩阵
      • 注意:

        • reshape函数在划分的时候是按照列的方向划分出一行的
      • 示例:

        • 生成[2, 1, 4, 3...]向量
          • reshape([2:2:100; 1:2:100], 1, [])

    多项式拟合函数

    • polyfit 函数 -> 返回拟合的多项式 -> 类似于 [3, 2, 1] (注意: 多项式在matlab中是以数组的方式存储的, 其中x变量的阶数就是下标, 所以返回的多项式是将降幂的)

      • 参数1: x为横坐标

      • 参数2: y为纵坐标

      • 参数3: n为拟合出来的多项式的最高阶数

        • 例子: 拟合出来的是 y = 2n^2 + 3n + 1, 观察到幂数是从高到低排序的
        • 则n就是2
      • 返回值:
        + p: 各个阶数的系数, 返回的是一个行vector

    • polyval 函数

      • 参数1: 多项式 -> [3, 2, 1] -> 3x^2 + 2x + 1
      • 参数2: 输入的值, 可以为向量[1, 2, 3]也可以是矩阵
      • 返回值:
        • 将参数2代入参数1表示的多项式返回的结果

    最大回撤率函数

    • maxdrawdown 函数

      • 参数1: 向量(一维的)

      • 返回值:
        + 最大回撤率 -> 就是风险率

    读取文件

    • xlsread()

      • 参数1: filename

      • 参数2: sheet

      • 参数3: xlRange

      • 返回值:
        + 数据

    • xlswrite()

      • 参数1: filename
      • 参数2: a variable
      • 参数3: sheet
      • 参数4: xlRange
    • save():

      • 示例:
        • save(filename, a_variable, '-ascii'), 注意: 最好只保存一个变量这样在读取的时候方便
        • 其中a_variable要使用引号包含起来
    • load():

      • 示例:
        • a = load(filename, 'acsii'), filename的数据要维度一样
    • textread(), 读入的精度好:

      • 参数1: filename

      • 参数2: format --> '%s %s %f %d'

      • 参数3: number_of_lines_to_read

      • 参数4: 'headerlines'

      • 参数5: where_is_the_headerline, will begin to read the next line

      • 返回值:

        • 返回值的个数要与format中的%的格式数量对应
    • fprintf(), 写出的精度好

      • 参数1: filename_fid
      • 参数2: fmt, 以空格分开

    文件读取三步骤

    1. fid = fopen(filename, 'r')
    2. var = fread(fid, '* char'), 读取所有的字符
    3. var = native2unicode(var), 转为unicode
    4. fclose(fid)

    目录函数

    • dir()

      • 参数1: 目录名
      • 返回值
        • 一个struct array结构体, 属性有name, folder, isdir, datef, bytes
    • fullfile()

      • 参数1: 目录名, 不能以/结尾

      • 参数2: 可以是文件或者目录

      • 返回值: 返回添加了/的目录路径的字符串

    显示图片

    • imread()

      • 参数1: filename

      • 参数2: fmt

      • 返回值: 相应图片类型的维度, bmp为二维的, jpeg为三维的

    • imshow()

      • 参数1: 矩阵
      • 参数2: 矩阵中的值域(用来控制对比度)

    读取视频

    • videoFReader = vision.VideoReader('my.mp4'); % 保存了视频帧, 一堆又一堆的矩阵
    • videoPlayer = vision.VideoPlayer(); % 用来显示一个帧
    • while ~IsDone(videoFReader) % isDone函数用来判断是否到了end了
    • currentFrame = step(videoFReader); % 获取Reader中保存的一个帧, 栈会一步一步的走下去, 如果不需要将帧指针返回到初始位置, 则使用reset(videoFReader);
      
    • step(videoPlayer, currentFrame); % 播放一个帧
      
    • end
    • release(videoPlayer); % 释放videoPlayer, 为下一次play做准备

    读取视频2(这是player的位置)

    • r = groot, % groot就是屏幕, r.ScreenSize返回的是[1, 1, 1400, 900]返回的是左下角和右上角

    • videoFReader = vision.VideoReader('my.mp4'); % 保存了视频帧, 一堆又一堆的矩阵

    • videoPlayer = vision.VideoPlayer('Position', [1, 1, 1400, 900]); % 用来显示一个帧

    • while ~IsDone(videoFReader) % isDone函数用来判断是否到了end了

    • currentFrame = step(videoFReader); % 获取Reader中保存的一个帧, 栈会一步一步的走下去, 如果不需要将帧指针返回到初始位置, 则使用reset(videoFReader);
      
    • step(videoPlayer, currentFrame); % 播放一个帧
      
    • end

    • release(videoPlayer); % 释放videoPlayer, 为下一次play做准备

      ---恢复内容结束---

      ### 常用函数

    • xlim 和 ylim --> 设置图像中的x和y的定义域和值域

      • 参数1: start

      • 参数2: end

      • 额外:

        • axes函数
    • numel 函数 --> 返回向量或者矩阵中所有元素的个数

      • 参数1: matrix
      • 返回值:
        返回向量或者矩阵中所有元素的个数
    • logpace 函数 --> 返回行向量

      • 参数1: a

      • 参数2: b

      • 参数3: n

      • 返回值:

        • 返回一个在[(10^{a}), (10^{b})]之间有n个元素的行向量
    • linspace 函数 --> 返回行向量

      • 参数1: a

      • 参数2: b

      • 参数3: n

      • 返回值:

        • 返回一个在[a, b]之间有n个元素的行向量
    • spline 函数 --> 返回一个非矩阵形式的三阶样条的函数

      • 参数1: x

      • 参数2: y

      • 返回值:

        • 返回一个非矩阵形式的三阶样条的函数
      • 注意:

        • 获取返回值之后, 紧接着调用ppval(p, x)函数计算出函数结果
    • ppval 函数 --> 计算出多项式的结果

      • 参数1: p -> 非矩阵形式的函数

      • 参数2: x向量的值

      • 返回值:

        • 返回结果
    • poly2sym 函数 -> 将系数多项式转为符号多项式

      • 参数1: 一个系数多项式的向量

      • 返回值:

        • 一个符号多项式
    • conv 函数 -> 多项式乘法

      • 参数1: 第一个多项式向量

      • 参数2: 第二个多项式向量

      • 返回值:

        • 返回参数1和参数2进行多项式乘法之后得到的多项式的结果
    • max 函数 -> 计算出最大值

      • 参数1: 需要计算的矩阵

      • 参数2: 为[], 好像是一个表示位, 如果不写第二个参数则返回的就是一个向量, 但是如果写了[], 则还会返回一个最大值在原来的矩阵中对应的下标

      • 参数3: 1表示查找列中最大值, 2表示查找行中最大值

      • 返回值:

        • 如果第二个参数为[], 返回两个向量
        • 如果没有第二个参数, 返回的是一个向量
      • 建议:

        • 有时候忽略第二个参数会有问题, 尽量使用上第2个参数
    • min函数和max一样

    • reshape函数 -> 返回一个reshape后的矩阵

      • 参数1: 需要reshape的矩阵

      • 参数2: reshape成几行

      • 参数3: reshape成几列, 如果为[]则会根据参数2自动计算出列数, 如果我们划分的行和列不合理就会报错

      • 返回值

        • 一个reshape后的矩阵
      • 注意:

        • reshape函数在划分的时候是按照列的方向划分出一行的
      • 示例:

        • 生成[2, 1, 4, 3...]向量
          • reshape([2:2:100; 1:2:100], 1, [])

    多项式拟合函数

    • polyfit 函数 -> 返回拟合的多项式 -> 类似于 [3, 2, 1] (注意: 多项式在matlab中是以数组的方式存储的, 其中x变量的阶数就是下标, 所以返回的多项式是将降幂的)

      • 参数1: x为横坐标

      • 参数2: y为纵坐标

      • 参数3: n为拟合出来的多项式的最高阶数

        • 例子: 拟合出来的是 y = 2n^2 + 3n + 1, 观察到幂数是从高到低排序的
        • 则n就是2
      • 返回值:
        + p: 各个阶数的系数, 返回的是一个行vector

    • polyval 函数

      • 参数1: 多项式 -> [3, 2, 1] -> 3x^2 + 2x + 1
      • 参数2: 输入的值, 可以为向量[1, 2, 3]也可以是矩阵
      • 返回值:
        • 将参数2代入参数1表示的多项式返回的结果

    最大回撤率函数

    • maxdrawdown 函数

      • 参数1: 向量(一维的)

      • 返回值:
        + 最大回撤率 -> 就是风险率

    读取文件

    • xlsread()

      • 参数1: filename

      • 参数2: sheet

      • 参数3: xlRange

      • 返回值:
        + 数据

    • xlswrite()

      • 参数1: filename
      • 参数2: a variable
      • 参数3: sheet
      • 参数4: xlRange
    • save():

      • 示例:
        • save(filename, a_variable, '-ascii'), 注意: 最好只保存一个变量这样在读取的时候方便
        • 其中a_variable要使用引号包含起来
    • load():

      • 示例:
        • a = load(filename, 'acsii'), filename的数据要维度一样
    • textread(), 读入的精度好:

      • 参数1: filename

      • 参数2: format --> '%s %s %f %d'

      • 参数3: number_of_lines_to_read

      • 参数4: 'headerlines'

      • 参数5: where_is_the_headerline, will begin to read the next line

      • 返回值:

        • 返回值的个数要与format中的%的格式数量对应
    • fprintf(), 写出的精度好

      • 参数1: filename_fid
      • 参数2: fmt, 以空格分开

    文件读取三步骤

    1. fid = fopen(filename, 'r')
    2. var = fread(fid, '* char'), 读取所有的字符
    3. var = native2unicode(var), 转为unicode
    4. fclose(fid)

    目录函数

    • dir()

      • 参数1: 目录名
      • 返回值
        • 一个struct array结构体, 属性有name, folder, isdir, datef, bytes
    • fullfile()

      • 参数1: 目录名, 不能以/结尾

      • 参数2: 可以是文件或者目录

      • 返回值: 返回添加了/的目录路径的字符串

    显示图片

    • imread()

      • 参数1: filename

      • 参数2: fmt

      • 返回值: 相应图片类型的维度, bmp为二维的, jpeg为三维的

    • imshow() --> 尽量原样输出原始图片

      • 参数1: 矩阵
      • 参数2: 矩阵中的值域(用来控制对比度)

    读取视频

    • videoFReader = vision.VideoReader('my.mp4'); % 保存了视频帧, 一堆又一堆的矩阵
    • videoPlayer = vision.VideoPlayer(); % 用来显示一个帧
    • while ~IsDone(videoFReader) % isDone函数用来判断是否到了end了
    • currentFrame = step(videoFReader); % 获取Reader中保存的一个帧, 栈会一步一步的走下去, 如果不需要将帧指针返回到初始位置, 则使用reset(videoFReader);
      
    • step(videoPlayer, currentFrame); % 播放一个帧
      
    • end
    • release(videoPlayer); % 释放videoPlayer, 为下一次play做准备

    读取视频2(这是player的位置)

    • r = groot, % groot就是屏幕, r.ScreenSize返回的是[1, 1, 1400, 900]返回的是左下角和右上角
    • videoFReader = vision.VideoReader('my.mp4'); % 保存了视频帧, 一堆又一堆的矩阵
    • videoPlayer = vision.VideoPlayer('Position', [1, 1, 1400, 900]); % 用来显示一个帧
    • while ~IsDone(videoFReader) % isDone函数用来判断是否到了end了
    • currentFrame = step(videoFReader); % 获取Reader中保存的一个帧, 栈会一步一步的走下去, 如果不需要将帧指针返回到初始位置, 则使用reset(videoFReader);
      
    • step(videoPlayer, currentFrame); % 播放一个帧
      
    • end
    • release(videoPlayer); % 释放videoPlayer, 为下一次play做准备
  • 相关阅读:
    Android基础-Android Bitmap高效加载策略
    Android基础-Android进程间通信方式
    Android基础-Android虚拟机及编译过程
    Android基础-View测量、布局及绘制原理
    Android基础-Window、Activity、DecorView以及ViewRoot之间的关系
    Android基础-LruCache原理解析
    Android基础-IntentService详解
    Android基础-AsyncTask详解
    linux 校准时间
    网站自动识别移动端访问并跳转
  • 原文地址:https://www.cnblogs.com/megachen/p/9729476.html
Copyright © 2011-2022 走看看