Matlab基础知识

Matlab基础知识

  • 前言:笔者在学习数据分析时,发现像Matlab、R语言、Python这些都是工具,它们和Java和C系语言不一样的是它们比较灵活,使用者不必像Java一样要完全理解整个语言,而主要是现学现用的多,尤其是现在的工具包日新月异,脚本语言,拿来就可以用,就可以跑出我们的模型才是目的,不必死扣细节
  • 先来个例题:解如下方程:
    x23x+1=0 x 2 − 3 x + 1 = 0
    >> p = [1,-3,1]
    >> a = roots(p)

    a =

        2.6180
        0.3820
    >> x = -5:0.1:5; #从-55的向量,步长为0.1
    >> plot(x,y1) %绘制图片
  1. 数据类型

    • 整型
      • 有符号 int8、int16、int32、int64:分别代表8位,16位,32位,64位的有符号整数,如:int8: -128~127
      • 无符号 uint8、uint16、uint32、uint64:分别代表8位,16位,32位,64位的无符号整数 如:uint8:0~255
    • 浮点型
      • single 单精度浮点数,4字节
      • double 双精度浮点数,8字节
    • 复数:如A = 6+5*i,(在matlab中 i与j 都默认代表复数的虚部单位,且 i*j = -1)
      • 实部:双精度浮点型
        • real(A) :求A的实部
      • 虚部:双精度浮点型
        • imag(A) :求A的虚部
    • 函数
    • 形如:函数名(函数自变量),自变量一般都是矩阵,常数也是特殊的矩阵,返回的是与自变量同型的矩阵,都是矩阵
    • 数学函数
      • 以弧度度为单位的函数
        • sin()、cos()、tan()等,输入的是弧度,如:sin(pi/2);
      • 以角度为单位的函数
        • sind()、cosd()、tand()等,输入的是弧度,如:sind(90);
      • abs
        1. 取实数绝对值
        2. 取复数的模
        3. 字符串的ASCII码值
      • 取整,和其它软件包差不多
        • fix:去掉小数
        • floor:向下取整
        • ceil:向上取整
        • round:四舍五入取整
        • 判断素数:isPrime(),是素数则返回1,不是返回0
    • 矩阵

      • 创建矩阵

        • 方括号:>> A = [1,2,3;4,5,6]

                A =
        
                     1     2     3
                     4     5     6
        
      • 由小矩阵列构造:C = [A,B ; B,A];

      • 复数矩阵:A=B + i*C
      • 冒号表达式:A = e1 : e2 : e3;

        A = 1:0.1:2
        A =
        1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000

      • 定数等分:linspace(a,b,n),a是第一个元素,b是最后一个元素,n是元素总数,公差就等于(b-a)/ n
      • 还有结构矩阵、单元矩阵
      • 矩阵元素的引用
        • A(m,n) ,如:A(4,5)取第四行第五个元素
        • 序号(矩阵的序号从第一列的第一个元素排到第一列最后一个元素,然后从第二列排… …)
          • ind2sub() : 通过序号获取下标
          • sub2ind():通过下标获取序号
          • 通过序号取元素,A(4)
      • 子矩阵
        • A(i , : )
        • A( : , j)
        • end运算符:行或者列的末尾下标
      • 删除元素
        • 删除即把元素置空,如:A = [];
        • 也可以把某行或某列删除,B( : , [2,4] ) = [] 删除第2、4列元素
      • reshape(A,m,n):把矩阵A排成(m,n)形
        • A = A( : )化成列向量
  2. 字符串
    • 字符串相当于行向量,如:ch = ‘abcde’; ch(1:5);取前五个字符
    • 字符串倒序: ch = ch(end:-1:1); 前面取矩阵元素的原理
    • 执行字符串命令:eval( s );
    • ASCII码与字符
      • abs( s )、double(s)都可以取字符矩阵S的ASCII码矩阵
      • char( a + 32 ) :取(a+32)对应的字符
    • 字符串的比较(按照ASCII码比)
    • strcmp(s1,s2);判断两个字符串是否相等,若是则返回1,否则返回0
    • strncmp(s1,s2,n) 判断前n个字符是否相等
    • strcmpi(s1,s2) 忽略大小写比较两个字符串是否相等
    • strncmpi(s1,s2,n) 忽略大小写比较两个字符串的前n个字符是否相等
  3. 运算
    • 算术运算(所讨论的都是矩阵运算)
      • +
      • -
      • *叉乘
      • / 右除 B / A = B * inv(A) ,inv(A)求的是A的逆
      • \ 左除 B \ A = inv(A) * B
      • ^乘方 a^2
    • 点运算
      • 矩阵中每个元素都与另一个矩阵对应的元素进行数学运算
        • 如: A.*B :A点乘B
    • 关系运算
      • < 判断左边是否小于右边,若是返回1,否则返回0
      • <= 小于或等于
      • > 大于
      • >= 大于或等于
      • == 判断相等
        • 如:判断偶数,p = (rem(A,2) == 0),rem()是取余运算
      • ~= 判断左右两边是否不相等
    • 逻辑运算,与其它编程语言差不多
      • 与 &
      • 或 |
      • 非 ~
码完已是深夜,这是笔者的笔记,纯手码,还没有过多地用于实践,有了实践经验会再分享
  • 读者如果想练习下,可以做下水仙花数,即:找出三位数中,所有位数的立方和等于它本身的数,如:153 = 1*1*1 + 5*5*5 + 3*3*3
    • 顺便贴下代码
%求水仙花数
m = 100:999;
m1 = rem(m,10);
m2 = rem(fix(m/10),10);
m3 = fix(m/100);
k = find(m == m1.*m1.*m1 + m2.*m2.*m2 + m3.*m3.*m3);
f = m(k)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值