【Matlab学习笔记】基本指令介绍

    技术2022-07-14  65

    文章目录

    0. 基础知识1. 矩阵2. 字符串3. 函数句柄4. 元胞5. 结构6. 函数7. 数值运算

    0. 基础知识

    获取帮助: help / help <函数名> / help win / help desk = doc

    找出相关命令: look for <关键字>

    类型信息基本型数值型整型无符号uint 8/16/32/64有符号int 8/16/32/64浮点型单精度single双精度double(默认)字符串构造型数组/矩阵只能含有同种类型, 定义[], 访问()元胞可以含有不同类型, 定义{}, 访问{}结构struct 域 field类符号对象

    常量: 内部定义的 ans, eps( 2 − 52 2^{-52} 252), realmax, realmin, pi, version, NaN, mf, i, j, lasterr 可以赋值, 但clear all后恢复默认值

    所有变量以数组/矩阵形式保存

    变量类型Local函数中定义的, 函数结束即死亡Global在工作空间, clear后死亡(多函数可用)Persistent类似static变量, .m文件中定义使用, clear后死亡

    who 工作空间变量名

    whos 工作空间变量名及其信息

    whor <变量名>

    clear xxx 删除xxx变量

    clc 清除记录

    intmax(‘int8’)

    intmin(‘int16’)

    realmax(‘single’)

    realmin(‘double’)

    class(xxx) 查看数据类型

    round(xxx) 最接近整数

    fix(xxx) 向0靠近的整数

    floor(xxx) 小于xxx的整数

    ceil(xxx) 大于xxx的整数

    format short/long/… 替换输出格式

    find(x) 返回非零的索引值

    虚数: 2-3i (3和i之间不能有空格) / complex(2, -3)

    逻辑: 0/1

    三元运算数值运算+ - * \ / ^ .+ .- .* .\ ./ .^关系运算== ~= < <= > >= || &&逻辑运算& | ~ any() or() not() all() xor()

    1. 矩阵

    数组/矩阵类型直接构造[…], " “或”,"为行内间隔, ";"为行间间隔增量法“:”x = i : j (默认间距1, 递增), x = i : k : j (间距k, 递增), x = i : -k : j (间距k,递减)等差向量linspace(2, 8, 10), 2到8等差取10个数(默认100个数)等比向量logspace(2, 8, 10), 2到8等比取10个数(默认100个数)特殊zeros, ones, eye(单位矩阵, 默认2维), magic, rand(均匀分布随机), randn(正态分布随机), diag(对角阵)复合B = [A, eye(3), ones(3), A .* 2]

    返回矩阵行列数: size(A)

    转置: ’

    共轭转置: .’

    A(r, c) 取r行c列元素, (r/c=":", 值全部)

    A(😃 所有元素排成一列

    A(😃 = D(😃 要求D, A元素数量相等, 可保持A行列形式不变替换值

    x = [], 清空但不删除x

    A(:, 3:4) = [], 删除3, 4列

    flipud(x) 沿水平线翻转

    fliplr(x) 沿垂直线翻转

    reshape(A, 1, 9) 重整行列数

    rot90(x) 逆时针旋转90°

    det(x) 行列式

    rank(x) 秩

    inv(x) 逆

    trace(x) 迹

    eig(x) 特征向量

    [U, S, V] = svd(x) SVD奇异值分解

    2. 字符串

    c = ‘B1-%’ c(1)为"B",

    char(97)为"B"

    num2str(97)为"97"

    mat2str()

    int2str()

    a = [‘I’, ‘Am’; ‘a’, ‘uo’] = [‘IAm’; ‘auo’] 要保证每一行维数相等

    strcat('I ', ‘Am’) 为"IAm", 去掉尾空格

    length(a) = max(size(a))

    isletter()

    isspace()

    findstr(A, a)

    strcmp(A, B)

    3. 函数句柄

    f = @functionname f可代替函数名

    a = f(x, y)

    sq = @(x)x.^2 那么sq(5) = 25

    4. 元胞

    a{1} 访问第一个元素

    a = {[2, 3; 3, 4], ‘str’; 42, {1}}

    a = cell(3, 3)

    a{3, 2} = rand(3, 4)

    deal(a{:}) 查看内容

    a{1, 2} = [] 删除

    num2cell()

    celldisp(a) 显示域

    5. 结构

    student(1) 访问第一个

    student(1).name = ‘a’

    student(2).name = ‘b’

    student(1).grade = 4

    student(3) = struct(‘name’, ‘c’, ‘grade’, 5)

    student.name可访问所有student的name

    getfield(student(1), ‘name’)

    student = rmfield(student(1), ‘name’)

    6. 函数

    disp()

    fprintf("%d", x)

    for i = 1:10 … end

    while … end

    try … catch … end

    if … elseif / else if … end

    switch … case … otherwise … end

    function ret=name(x) … end

    pause(3) 暂停2秒

    pause 暂停直到输入

    .m文件脚本文件全局变量, 无参, 无返回函数文件local, 有参, 有返回值

    nargin 实际输入个数

    nargin(‘fun’) 标准输入个数

    nargout 实际输出个数

    nargout(‘fun’) 标准输出个数

    inputname(n) 第n个输入的实际名字

    varargin 变长输入

    varargin(n) 第n个输入

    varargout(n) 第n个输出

    keyboard 中断, 出现k>>(可debug), 工作区出现local变量

    标准断点 红: 有效, 灰: 无效

    dbstop in file (at line No.) (命令行) dbstep运行, dbquit 推出debug

    dbclear all / in file / in file at line 清除断点

    dbstatus

    条件断点 dbstop … if … / error / warning

    profile on / profile view 分析时间

    matlab优化方式: 向量化, 预定义(先声明H=zeros(5, 10000), 再赋值)

    7. 数值运算

    m = max(A)

    [m, idx] = max(A), 此方式获得idx

    max(a, b)

    max(A, [], 2) 第2行中最大值

    max(A, [], 1) = max(A)

    sort(x) 默认升序

    mean(x) 或 mean(x, dim)

    median(x) 或 median(x, dim)

    sum(x) 或 sum(x, dim)

    std(x) 标准差

    prod(x) 元素乘积

    cumsum(x) 元素累和

    cumprod(x) 元素累积

    corrcoef(x) 相关系数

    Processed: 0.014, SQL: 9