• 【MATLAB】MATLAB学习笔记


    本文参考B站视频:BV13D4y1Q7RS
    由于我对于C语言很熟悉,很多语法是会参考C来学

    基础操作

    1. 清屏
      %% 清空环境变量及命令
      clear all %清除Workspace中的所有变量(右侧工作区)
      clc %清除Command Window中的所有命令(命令行窗口)
      
      • 1
      • 2
      • 3
    2. 注释
      %%
      %
      
      • 1
      • 2
    3. 查功能
      doc 你要查询的
      
      • 1

    变量命名

    变量命名规则

    • 变量名区分大小写
    • 变量名长度不超过63位(MATLAB R2012a 32bit和64bit计算机上测试结果)
    • 变量名以字母开头,可以由字母、数字和下划线组成,但不能使用标点
    • 变量名应简洁明了,通过变量名可以直观看出变量所表示的物理意义

    数据类型

    1. 数字

    2. 字符

      s='a'  %单引号表示字符串
      abs(s)  %输出s的ASCII码
      char(97) %输出ASCII码对应的字符
      num2str(65) % Number To Str输出字符数字65
      
      • 1
      • 2
      • 3
      • 4
    3. 字符串

      str='I love MATLAB & Machine Learning'
      length(str) %字符串长度
      
      • 1
      • 2
    4. 矩阵
      矩阵的定义与构造

      %% 矩阵的定义与构造
      A1 = [1,2,3,4,5,6,5,4,6]
      B=1:2:9 %1-9隔1取值,第二个参数为步长,不可缺省
      C = repmat(B,3,2) %重复执行3行2列
      
      A2 = [1 2 3; 4 5 2; 3 2 7] %3*3
      
      D = ones(2,4) %生成一个2行4列的全1矩阵
      
      E = zeros(10,5,3)   %创建一个10行5列3维的全0矩阵
      
      % rand(m,n)生成m*n均匀分布的伪随机数,分布在(0~1)之间
      % rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是’single’
      % rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数
      F(:,:,1) = rand(10,5)   %10*5 
      
      % randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机数
      % randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
      % randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵
      E(:,:,2) = randi(5,10,5)
      
      % randn生成标准正态分布的伪随机数(均值为0,方差为1)
      E(:,:,3) = randn(10,5)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23

      矩阵的运算

      %% 矩阵的运算
      A = [1 2 3 4; 5 6 7 8]
      B = [1 1 2 2; 2 2 1 1]
      C = A + B
      D = A - B
      E = A * B'
      F = A .* B % .*表示对应项相乘
      G = A / B %相当于A*B的逆
      H = A ./ B % ./表示对应项相除
      
      I = A2'      % A转置
      J = inv(A) % 逆矩阵
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12

      数组下标

      %% 数组下标
      B=A(2,3)
      C=A(3,:)    %第三行
      D=A(:,4)    %第四列 
      [m,n]=find(A >20)   %找符合()中式子的数字下标
      
      • 1
      • 2
      • 3
      • 4
      • 5
    5. 元胞数组

      %% 元胞数组
      A = cell(1,6)
      A{2} = eye(3)   %下标从1开始 eye(3)对角线为1的3*3矩阵
      A{5} = magic(5) % magic(5)5*5幻方矩阵
      B = A{5}    %取A第5个cell
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述

    6. 结构体

      %% 结构体
      books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
      books.name 
      books.name(1)   %取cell
      books.name{1}   %取字符串
      
      • 1
      • 2
      • 3
      • 4
      • 5

    逻辑和流程控制

    循环结构

    1. for循环

      %% for循环
      语法格式:
      for循环变量=初值:步长:终值(步长可省略,默认为1)
          执行语句1
          ...
          执行语句n
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      %【例5-8】求1^2+2^2+3^2+4^2+5^2的和。程序设计为:
      sum = 0
      for n= 1:1:5
          sum = sum +n^2;
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述

      在这里插入图片描述

      sum = 0;
      for i= 1:5
          p= 1;
              for j=1:i
              p=p*j;
              end
          sum = sum + p;
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      在这里插入图片描述

    2. while循环

      %% while
      语法格式:
      while 条件表达式
          执行语句1
          ...
          执行语句n
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      % 【例5-11】求1+2+3+4+5+…+10的和。
      s= 0
      n= 1
      while n<= 10 %设置循环条件
          s =s+n
          n =n+1
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      在这里插入图片描述

      %【例5-12】设计一段程序,求1~100的奇数和程序设计为:
      x= 1
      sum = 0
      while x<101
          sum= sum+ x;
          x =x+2
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      在这里插入图片描述

    分支结构

    1. if…end

      %% if...end
      语法格式:
      if 条件表达式
          ...
          语句体
          ...
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    2. if…else…end

      %% if...else...end
      语法格式:
      if 条件表达式
          语句体1
      else
          语句体2
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    3. switch…case…end

      %% switch
      switch 表达式(数值或字符串)
          case数值或字符串1
              语句体1;
          case数值或字符串2
              语句体2;
          ...
          otherwise
              语句体n;
      end
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

      switch后面表达式的值为数值变量或字符变量,通过这些值与case后面数值或字符串的值进行比较,与哪一个 case的值相同就执行哪一个case下面的语句体,如果与所有case的值都不相同,则执行otherwise下面的语句体。otherwise语句可以省略,如果省略ptherwise,所有case都不满足时跳出分支结构,另外switch必须与end配对使用。

    绘图基本操作

    二维平面绘图

    %% 二维平面绘图
    x = 0:0.01:2*pi %定义x的范围,第二个参数表示步长
    y = sin(x)
    figure %建立一个幕布
    plot(x,y) %绘制当前二维平面图
    title('y = sin(x)') %标题
    xlabel('x') %x轴
    ylabel('sin(x)') %y轴
    xlim([0 2*pi]) % x坐标值的范围
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    绘图参数

    在这里插入图片描述

    在这里插入图片描述

    x = 0:0.01:20;
    y1 = 200*exp(-0.05*x).*sin(x);
    y2 = 0.8*exp(-0.5*x).*sin(10*x);
    figure
    [AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
    %设置相应的标签
    set(get(AX(1),'Ylabel'),'String','Slow Decay')
    set(get(AX(2),'Ylabel'),'String','Fast Decay')
    xlabel('Time(\musec)')
    title('Multiple Decay Rates')
    set(H1,'LineStyle','--')    %参数设置
    set(H2,'LineStyle',':')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    三位立体绘图

    %% 三维立体绘图
    t = 0: pi/50: 10*pi;
    plot3(sin(t),cos(t),t)
    xlabel('sin(t)')
    ylabel('cos(t)')
    zlabel('t')
    %hold on 在图像基础上继续绘图
    %hold off %不保留当前操作
    grid on %加网格线
    axis square %使整个图(连同坐标系)呈方体
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    图像窗口的分割

    %% 图像窗口的分割
    x=linspace(0,2*pi,60);
    subplot(2,2,1)%用来给幕布分格,表示将幕布均等分成2行2列,将图形放到第一个格子中
    plot(x, sin(x)-1);
    title('sin(x)-1');axis([0,2*pi,-2,0])
    
    subplot(2,1,2)
    plot(x, cos(x)+1);
    title('cos(x)+1');axis([0,2*pi,0,2])
    
    subplot(4,4,3)
    plot(x, tan(x));
    title('tan(x)');axis([0,2*pi,-40,40])
    
    subplot(4,4,8)
    plot(x, cot(x));
    title('cot(x)');axis([0,2*pi, -35,35])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

  • 相关阅读:
    开发者新手指南:一文汇总 Web3 开发工具
    web前端期末大作业 基于HTML+CSS+JavaScript程序员个人博客模板(web学生作业源码)
    Python 编程语言的介绍
    全媒体整合营销时代,如何做好网络营销?
    【Kubernetes】当K8s出现问题时,我们可以从哪些方面排查出
    Typescript 中根据某个字段判断其他字段是否必传
    数据结构HW2
    【C++】异常
    VS2019无法设置Qt版本解决方案
    千万播放竟有通用公式?B站被小看的爆款机会!
  • 原文地址:https://blog.csdn.net/m0_51350326/article/details/136587064