【MATLAB】MATLAB学习笔记

MATLAB入门

本文参考B站视频:BV13D4y1Q7RS

由于我对于C语言很熟悉,很多语法是会参考C来学

基础操作

  1. 清屏

    powershell 复制代码
    %% 清空环境变量及命令
    clear all %清除Workspace中的所有变量(右侧工作区)
    clc %清除Command Window中的所有命令(命令行窗口)
  2. 注释

    powershell 复制代码
    %%
    %
  3. 查功能

    powershell 复制代码
    doc 你要查询的

变量命名

变量命名规则

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

数据类型

  1. 数字

  2. 字符

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

    powershell 复制代码
    str='I love MATLAB & Machine Learning'
    length(str) %字符串长度
  4. 矩阵
    矩阵的定义与构造

    powershell 复制代码
    %% 矩阵的定义与构造
    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)

    矩阵的运算

    powershell 复制代码
    %% 矩阵的运算
    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) % 逆矩阵

    数组下标

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

    powershell 复制代码
    %% 元胞数组
    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
  6. 结构体

    powershell 复制代码
    %% 结构体
    books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
    books.name 
    books.name(1)   %取cell
    books.name{1}   %取字符串

逻辑和流程控制

循环结构

  1. for循环

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

    powershell 复制代码
    %% while
    语法格式:
    while 条件表达式
        执行语句1
        ...
        执行语句n
    end
    powershell 复制代码
    % 【例5-11】求1+2+3+4+5+...+10的和。
    s= 0
    n= 1
    while n<= 10 %设置循环条件
        s =s+n
        n =n+1
    end
    powershell 复制代码
    %【例5-12】设计一段程序,求1~100的奇数和程序设计为:
    x= 1
    sum = 0
    while x<101
        sum= sum+ x;
        x =x+2
    end

分支结构

  1. if...end

    powershell 复制代码
    %% if...end
    语法格式:
    if 条件表达式
        ...
        语句体
        ...
    end
  2. if...else...end

    powershell 复制代码
    %% if...else...end
    语法格式:
    if 条件表达式
        语句体1
    else
        语句体2
    end
  3. switch...case...end

    powershell 复制代码
    %% switch
    switch 表达式(数值或字符串)
        case数值或字符串1
            语句体1;
        case数值或字符串2
            语句体2;
        ...
        otherwise
            语句体n;
    end

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

绘图基本操作

二维平面绘图

powershell 复制代码
%% 二维平面绘图
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坐标值的范围

绘图参数

powershell 复制代码
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',':')

三位立体绘图

powershell 复制代码
%% 三维立体绘图
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 %使整个图(连同坐标系)呈方体

图像窗口的分割

powershell 复制代码
%% 图像窗口的分割
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])
相关推荐
rit843249918 小时前
有限元法求转子临界转速的MATLAB实现
开发语言·matlab
Matlab程序设计与单片机19 小时前
【机器人最短路径规划】基于标准蚁群算法
matlab·蚁群算法·路径规划问题
Marye_爱吃樱桃19 小时前
MATLAB R2024b的安装、简单设置——保姆级教程
开发语言·matlab
IT猿手1 天前
基于控制障碍函数的多无人机编队动态避障控制方法研究,MATLAB代码
开发语言·matlab·无人机·openclaw·多无人机动态避障路径规划·无人机编队
Evand J1 天前
【MATLAB复现RRT(快速随机树)算法】用于二维平面上的无人车路径规划与避障,含性能分析与可视化
算法·matlab·平面·无人车·rrt·避障
s09071361 天前
【声纳成像】基于滑动子孔径与加权拼接的条带式多子阵SAS连续成像(MATLAB仿真)
开发语言·算法·matlab·合成孔径声呐·后向投影算法·条带拼接
IT猿手2 天前
基于 ZOH 离散化与增量 PID 的四旋翼无人机轨迹跟踪控制研究,MATLAB代码
开发语言·算法·matlab·无人机·动态路径规划·openclaw
IT猿手2 天前
基于控制障碍函数(Control Barrier Function, CBF)的无人机编队三维动态避障路径规划,MATLAB代码
开发语言·matlab·无人机·动态路径规划·无人机编队
SugarFreeOixi2 天前
MATLAB绘图风格记录NP类型
python·matlab·numpy
IT猿手2 天前
基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码
开发语言·matlab·无人机·动态路径规划