MATLAB笔记

使用方法:ctrl+F
看看有没有你想要的内容

MATLAB基础

  • .* .^ 是矩阵与矩阵里面对应元素相乘

  • 判断是否为正整数:取整之后是否与自己相等

  • 缺少function的主程序是不能够与子函数写一起的

  • rand 本身是一个0~1之间的随机数,而randi(IMAX,[M,N])生成最大为IMAX的正整数矩阵

  • 记得文件名要与主函数名一致(其实只要不要与函数名重名即可,因为如果不一致的话MATLAB会忽视函数名);函数文件名要与函数名一致


    MATLAB笔记_第1张图片
    笔记.png
  • cell矩阵还是一个矩阵,所以赋值到几行几列是用(),只不过赋值的时候用{}把要赋值的内容扩一下,表示定义一个cell矩阵并赋值(不需要在前面新定义几行几列的cell矩阵,这样维数可以更灵活)
    a{m,n} = x

  • 把函数的变量保存到工作空间(workspace):assignin('base','valname',val)

  • cell数据通过行列坐标取某元素数据,()返回的是cell类型,{}返回的是对应元素的类型(一般用后者)

  • function 后面用[],表示输出;= 函数名 后面用(),表示输入

  • 矩阵拼接用方括号[]就可以了
    [A,B]是横向拼接;[A;B]是纵向拼接

  • 删除矩阵中的多列 A(:,1:5)=[]或A([1,3,5,7],:)=[]

  • 方括号[condition~a]作logical化,a(condition)取子集
    [a>5]返回一个同维数logical向量,而a(a>5)会把满足条件的元素取出来,新向量维数不超过原向量维数
    矩阵A类似,A(condition)取子集操作返回列向量

  • 除了通过条件取子集以外,还能通过索引取子集 index=find(condition); number(index);(用find不用写循环,通常用来找数)

  • &(且)而 |(或)
    关于短路逻辑运算符&& 与 一般逻辑运算符的区别,详见https://jingyan.baidu.com/article/ce09321b92ba2d2bfe858f45.html。
    简而言之,短路运算符只能作用于逻辑值(表达式),&&在左边判断为假之后就直接输出0,||在右边判断为真之后就直接输出1
    而一般运算符两边可以是逻辑值(表达式)或者是数值,两遍都要做判断
    短路运算是为了一些空元素导致后面判断报错的情况

  • 左除 \ 右除 / 的理解:往哪边倒就是哪边乘逆

  • 在MATLAB里面输出字符串根本不需要用什么函数,直接对个变量赋值,再去掉分号;输出即可;当然你可以用disp函数省略掉那个变量名和 =
    sprintf的作用是把数据转化成某种格式以便于后续输出

  • 把字符转换为ascii码用abs(str);把ascii码转换为字符用char(ascii)

  • 批量注释为ctrl+R,批量删除注释是ctrl+T

  • 生成包含随机不重复整数的向量可用randperm:randperm(n,k)从1~n个数随机抽取并排列k个不重复的数,可用于打乱矩阵顺序
    从矩阵里面随机抽元素可以用randsample(ARRAY,k):从ARRAY中随机抽k个元素

  • 一定条件元素的计数可用find函数。find(ARRAY+logical+condition)返回一个满足条件元素的列向量linear_indices,前面加个length就可以计数;ARRAY(linear_indices)就可以查看对应元素

  • 向量x,x(:) 返回的是一列,如果要返回一行应为x(1,:)

  • 关闭所有figure窗口:close all

  • 画完一个图 后写hold on,后面所有的图都不会被覆盖,直到写hold off为止

  • linspace(a,b,number) 用于生成等距节点

  • plot 函数画图原理:打点,然后把点用直线连起来;所以说,如果要画出曲线,那就减小点与点之间的间隔

  • hold on:开启图像保持功能,再次绘画不会覆盖原图

  • pause() 可以实现帧和动画的效果

  • axis([x1 x2 y1 y2]) 可以设置坐标轴范围:记得axis要紧跟在plot后面,否则会没有效果

  • scatter(x,y) 绘制散点图

  • subplot 建立画图函数画布
    subplot(m,n,p) 建立一个m行n列的画布,其中p为编号

  • handle = @(x1,x2,...)function_expression 此为匿名函数,@左边为函数句柄(函数名),@后定义了匿名函数的输入参数(多个参数用逗号分隔开),最后一部分为匿名函数的表达式
    使用 handle(x)即可

  • 用syms 定义符号变量肯定不会错

  • 定义符号方程式的方式:equ = S(12) == m
    求解符号方程式并带入数值的方式:
    x = solve(equ,'x')
    x = subs(x,p,interest); %将interest代入符号变量x中的p
    x = subs(x,m,money_desired); %将money_desired代入符号变量x中的m,,此时x是一个分式形式的符号数
    x = double(x);%解方程

  • 符号表达式与符号函数的区别
    syms x
    fplot(tan(x))
    &
    syms f(x) %改成sym会报错
    f(x) = cos(x);
    fplot(f)%传入的是函数句柄

  • lsqcurvefit 的用法是:先目测曲线大致的类型,写一个带有参数的匿名函数,设置初始解向量(参数的估计解),传入(函数句柄,初始解向量,观测数据x值,观测数据y值),得到参数解向量

你可能感兴趣的:(MATLAB笔记)