• MATLAB基础(三):MATLAB基本运算与字符串处理


    MATLAB基本运算

    MATLAB面向矩阵!
    MATLAB面向矩阵!
    MATLAB面向矩阵!


    MATLAB提供矩阵意义下

    算术运算
    关系运算
    逻辑运算

    当然也有针对矩阵元素的运算,单个数据的算术运算只是矩阵运算的一种特例


    算术运算
    加 + 、减 - 、乘 × 、除 (左除) / (右除) 、乘方 ^

    加减运算
    要求两矩阵同型,即维数、大小相同
    标量与矩阵进行加减运算时,把标量与矩阵的每一个元素相加减

    乘运算
    若矩阵A与矩阵B相乘,要求A的列数与B的行数相等,此时称AB矩阵是可乘的,或AB两矩阵维数和大小相容

    除法运算
    右除
    如果矩阵A是非奇异方阵,
    B右除以A  即 B/A 等价于B*inv(A)  A矩阵的逆右乘B矩阵
    B左除以A  即 AB 等价于inv(A)*B  A矩阵的逆左乘B矩阵
    inv() 求矩阵的逆

    对于矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系,一般B右除以A不等于B左除以A

    而对于含有标量的除法,左除右除一样一样的

    乘方运算
    一个矩阵A的乘方运算可以表示为 A^x,此处x为标量


    点运算
    两矩阵进行点运算是指它们对应位置元素进行相关运算,故要求两矩阵同型
    点乘.*、点右除./、点左除.、点乘方.^


    关系运算
    <、<=、>、>=、~=(不等于)

    当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同的位置元素按标量的关系运算规则逐个进行

    当参与比较的量一个是矩阵,一个是标量时,则将标量与矩阵的每一个元素按标量的关系运算规则进行比较

    上述结果都是一个与原矩阵同型的矩阵,它的元素由0和1组成


    逻辑运算
    MATLAB提供 &、|、~ 三种逻辑运算
    矩阵与矩阵、矩阵与标量的逻辑运算与关系运算类似


    例子
    求水仙花数:各位数字的立方之和等于该数字本身的三位正整数

    >> A=100:999;
    >> num1=rem(A,10);
    >> num2=rem(fix(A/10),10);
    >> num3=fix(A/100);
    >> res=find(A==num1.^3+num2.^3+num3.^3)
    
    res =
    
        54   271   272   308
    
    >> res = A(res)
    
    res =
    
       153   370   371   407
    

    MATLAB中的字符串

    字符串的表示
    MATLAB中,字符串是用单引号括起来的字符序列

    >> str='I''m you.'
    
    str =
    
        'I'm you.'
     
    >> str(1:2)
    
    ans =
    
        'I''
    

    字符串里的 ’ 用两个 ’ 来表示
    char=[‘abcde’;‘12345’];
    char(2,3) = ‘3’

    例子
    ① 取第1~5个字符组成的子字符串
    ② 将字符串倒过来重新排列
    ③ 将字符串中的小写字母变成相应的大写字母,其余字符不变
    ④ 统计字符串中小写字母的个数

    ch='ABc123d4e56Fg9';
    subch=ch(1:5) 
    revch=ch(end:-1:1)
    k=find(ch>='a'&ch<='z')
    ch(k)=ch(k)-('a'-'A')        
    length(k)
    

    字符串的执行

    eval() 函数

    >> PI = pi;
    >> m='[PI,sin(PI),cos(PI)]';
    >> res=eval(m)
    
    res =
    
        3.1416    0.0000   -1.0000
    
    

    有种将字符串解释为代码执行的感觉

    字符串的操作

    取ASCII值

    abs() 和 double() 函数都可以用来获取字符串矩阵对应的ASCII码数值矩阵
    char() 函数可以把ASCII码矩阵转换为字符串矩阵

    >> name='MATLAB'
    
    name =
    
        'MATLAB'
    
    >> ASCII=abs(name)
    
    ASCII =
    
        77    65    84    76    65    66
    
    >> char(ASCII+32)
    
    ans =
    
        'matlab'
    

    字符串比较

    ①利用关系运算符比较
    两个同长度的字符串可以通过关系运算符比较,结果是对应位置字符比较结果的数值向量

    ②字符串比较函数
    strcmp(s1, s2 [, n]) 比较字符串s1和s2前n个字符是否相等,相等返回1否则返回0 (n为字符个数,可选项)
    strcmpi(s1, s2 [, n]) 比较前n个字符是否相等,忽略大小写,相等返回1否则返回0 (n为字符个数,可选项)

    字符串查找与替换

    findstr(s1,s2):返回短字符串在长字符串中的开始位置与参数位置无关
    strrep(s1, s2, s3):等价于Java中String.replaceAll


    在这里插入图片描述


    还要拾起线代qnq

    2019/4/17

  • 相关阅读:
    如何找到bug(8): SequentialInputHandler::run()取数逻辑
    如何找到bug(7): 检查事例完整性的逻辑
    如何寻找bug(6)
    如何寻找bug(5)
    c++ : 静态成员函数
    c++:静态数据成员
    如何打开某一个包的debug
    如何寻找bug(4)
    如何找bug(3)
    Oracle学习系类篇(二)
  • 原文地址:https://www.cnblogs.com/kafm/p/12721816.html
Copyright © 2020-2023  润新知