zoukankan      html  css  js  c++  java
  • Matlab 常用语法速记 1

    ===快捷帮助===

    查找帮助:doc 函数名

    强制终止: ctrl + c

    注释: %

    清屏 clc,清临时变量窗口 clear

    NaN: not a number

    inf: infinite

    ===创建矩阵===

    列向量:vecx = [1 2 3 4];   vecy = [1 2 3]';

    矩阵:matA = [11 12 13 14; 21 22 23 24; 31 32 33 34];

    下标从“1”开始,matA(2,3) 返回 23;

    matA(1,:) 返回第1行向量

    matA(2, 1:3)返回第2行的1到3元素构成的向量 

    matA(2, 2:end)返回第2行的1到最后1个元素构成的向量 

    ==常用函数==

    生成(截断的)单位矩阵: eye(3),  eye(3,4);

    生成[0,1]之间的伪随机数: rand();

    生成1:100的随机打乱序列:randIndex = randperm(100);

    生成零数组:zeros(2,4)

    ===矩阵常见操作1===

    判断不相等:~

    返回矩阵大小: size(A),  szie(A, 2)

    矩阵乘法  *,逐元素乘  .*

    矩阵的逆   inv(matA)   或者    /matA

    找出符合条件的元素在矩阵中的位置“数组/向量”:  conIndexes = find( matA > 20 && matA < 25); 注意这里返回  conIndexes是 “按列优先”计数的向量;

    对这些找出的位置赋值: matA(conIndexes) = 0;   matA(conIndexes) = vecx';

    按列优先,将矩阵转化为一个长长的列向量:  vecA = matA(:);

    按列优先,将一个长长的 列 / 行 向量转化为矩阵:matA = reshape(vecA, 3, 4);

    reshape(),矩阵的每列都减去同一个列向量: matRes = matA - reshape(vecy, 1, 3);

    bsxfun(),自动拓展 行/列向量 以此和操作的矩阵匹配: matRes = bsxfun(@minus, matA, vecy);  @add / rdivide / times / ....

    ==字符操作==

    生成一个字符串的cell数组:cellStr =  { 'hello', 'my', 'world'};   取出字符  str1 = cellStr{1};

    字符串拼接: conStr = [ 'you', 'are', str1, 'heart' ];

    比较字符串是否相等:strcmp(cellStr{2}, 'mine') ,相等则返回 1

    打印 fprintf('%s %s %s: %ith cross ', algorithm{alg}, type{tp}, data{k}, i);

    replace字符串中的特定字符:  strrep(cellStr{2},  'm', 'happ');

    数字直接转化为字符:num2str()

    fprintf() = sprintf() + disp(),比如:strp = sprintf('圆周率 pi = %8.5f ', pi); disp(strp);  fprintf('圆周率 pi = %8.5f ', pi);

    ==文件及路径==

    创建路径:  fileFolder = [ './exp_result/', algorithms{3},  '_result/' ];

    如果上面路径不存在,则创建它

    if ~exist(fileFolder)
       mkdir(fileFolder)
    end

    移动到指定文件夹:  cd('./ml_metrics/');    ...;      cd('../');

    ==其他常用函数==

    将指定的字符串变量作为命令来执行:   eval( [ cellStr{2},  'Mat = 1;'] );

    将一些变量保存为指定路径下的 .mat:  save( ['./', cellStr{1}, '.mat'],   字符串变量名1,..., 字符串变量名n,[-append]);  如果已存在该.mat文件,不加-append会将擦除

    ===流控制语句===

    if 条件

      xxx;

    elseif/else

      xxx;

    end

    for i=1:10

      xxx;

    end

    while i>0

      xxx

    end

    switch 变量

        case 常量1

             语句序列1;

        ........

       case  常量n

             语句序列n;

       otherwise

             语句序列;

    end

    ==函数定义==

    function [retX, retY] = getSomething(inputX, inputY)

      xxx;

    end

    函数调用时真正调用的是函数文件名,而不是文件中函数的名字

  • 相关阅读:
    总结报告的感想
    第14、15週PTA題目的處理
    PTA題目的處理(三)
    PTA题目的處理(四)
    PTA題目的處理(二)
    PTA題目的處理(一)
    國慶和中秋的學習成果
    剛進入大學一個月的總結和作業
    【接口平台】too many values to unpack
    【接口平台】生成静态模拟数据
  • 原文地址:https://www.cnblogs.com/JesusAlone/p/8511296.html
Copyright © 2011-2022 走看看