MATLAB学习笔记

发布于 2023-07-17  159 次阅读


MATLAB学习

以下为简易版入门学习笔记

界面认识

  • 顶栏——时间与版本(a表示上半年的版本,b表示下半年的版本)
  • 预设——设置
  • 左侧为当前文件夹,可以更改,一般使用项目所在文件夹

命令行窗口

代码的实现以及公式计算

(clc为清空的指令)

编辑器的打开

在“新建”中点击“脚本”,即会创建新的编辑器窗口

如果一个脚本被编辑后没有保存,文件名会出现“*”符号

保存的快捷键——“Ctrl” + “s”

变量命名

变量的要求

数据类型

数值类型

整数类型

取整函数

注意:整数类型只能与整数或者双精度相乘

利用代码“whos”可以查询已有变量以及类型

复数类型

复数的创建可以直接根据复数的定义来创建

Inf表示正无穷,-Inf表示负无穷,NaN表示非数值量(0/0或者Inf/Inf)

  • 数字
    有+-*/运算符号
  • 字符与字符串
    s = ‘a’
    abs(s)【ASCLL码】
    char(97)【定义字符】
    num2str(65)【就是数字65】

    str = ‘I love you’
    length(str)【计算字符串长度,空格也算】
  • 矩阵
    A = [1 2 3;4 5 2;3 2 7]【创建矩阵】
    B = A‘【A的转置】
    C = A(:)【将A矩阵拉长了,从上到下显示数字】
    D = inv(A)【矩阵求逆,必须是方阵】
    E = zeros(10, 5, 3)【十行五列三维的零矩阵】

    rand为伪随机数,分布在零到一之间
    rand(m,n)生成m行n列的均匀分布的伪随机数
    rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数也可以是'single'

    randn生产标准正态分布的伪随机数(均值为0,方差为1)
    randn的语法和rand一样

    randi生产均匀分布的伪随机整数
    randi(iMax)在半开半闭(0,iMax] 生成均匀分布的伪随机整数
    randi(iMax,m,n)在半开半闭区间(0.iMax]间生成mxn的矩阵
    randi([iMin,iMax,m,n]在闭区间[iMin,iMax]间生成mxn的矩阵)
  • 元胞数组
    是数组的一种,其内部元素可以是不同的数据类型,相当于c语言中的结构体
    它的class函数的输出就是cell(细胞)
    可以看成啥都能装的大盒子~~~

    A = cell(1,6)【先生成一个一行六列的小盒子组】
    A{2} = eye(3)【生成3x3的对角线为1的矩阵放在第二个盒子里,注意,matlab的索引是从1开始】
    A{5} = magic(5)【magic生成n阶幻方,横着竖着斜着的元素相加相等】
    B = A{5}【把A中第五个盒子拿出来给B】
  • 结构体
    books就相对于python中的字典
    struct(‘name’,{{‘Machine Learning’,‘Date Mining’}},‘price’,[30,40])
    name和price就是属性,name中有{‘Machine Learning’,‘Date Mining’},prince有[30,40]
    books.name---输出‘Machine Learning’,‘Date Mining’
    books.name(1)输出‘Machine Learning’(cell)
    books.name{1}输出Machine Learning(字符串)

清空环境变量及命令

clear all —— 清除Workspace中所有变量(右侧工作区)

clc —— 清楚命令窗口所有命令

变量命令规则

  1. 变量名区分大小写
  2. 变量名长度不超过63位
  3. 变量名以字母开头,可以由字母,数字和下划线组成,但不能使用其他标点
  4. 注释用%%这个来,一个%也是注释

MATLAB矩阵操作

矩阵的定义与构造

A = [1 2 3 5 8 5 4 6]多行加分号
B = 1:2:9(选择1到9的数值,每次跳转2,中间称为步长,最小值一定取,最大可以不取,不可以缺少步长)
C = repmat(B,3,1)(将B重复三行,一行重复一次)
D = ones(2,4)(生成两行四列元素全是1的矩阵)

矩阵的四则运算

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‘ (A与B的转置相乘)
F = A .* B (A与B对应项相乘)
G = A / B (相对于A乘以B的逆矩阵)
H = A ./ B(A和B对应项相除)

矩阵的下标

A = magic(5)
B = A(2,3)(取A矩阵的第二行第三列的值)
C = A(3,:)(取A第三行全部,:表示全部)
[m,n] = find(A>20)(找大于20 的序号值/矩阵,最后会给出m分别多少,n分别是多少,对应mn就是序号值)

程序的结构

关系操作符

逻辑与流程控制

  • if ... else ... end
    选择结构
  • for ... end
    for 循环变量 = 初值:步长:中值(从初到末,中间相隔步长的循环)
    sum = 0;
    for n = 1:5;(步长一可以省略)
    sum = sum + n^2;
    end
  • while ... end
    while 条件表达式
    执行语句...
    end

    s = 0;
    n = 0;
    while n <= 10(不可以加分号!!!)
    s = s + n;
    n = n + 1;
    end
  • switch ... case ... end
    switch 表达式
    case 数值
    语句一;
    case 数值
    语句二;
    ... ...

绘图二维

x = 0:0.01:2*pi;
y = sin(x);
figure 【建立一个幕布】
plot(x,y)
title(y = sin(x)‘) 【给上一个标题】
xlabel(’x‘) 【横坐标标题】
ylabel(’sin(x)‘) 【纵坐标标题】
xlim([0 2*pi]) 【定义域】

x = 0:01:20;
y1 = 200*exp(-0.05x).*sin(x);

绘图颜色表:

单引号加上以下颜色代码之一
红色 r
粉红 m
绿色 g
青色 c
蓝色 b
白色 w
蓝色 b
白色 w
黄色 y
黑色 k

还可以改线型以及数据标记点选项参数,都用单引号引用,具体类型可以谷歌上百度一下

其他

x = 0:0.01:20;【从零开始一直到20,0.01为步长】
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');【公用一个坐标系在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',':')

绘图三维

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)【绘制三维】
xlabel('sin(t)')【x轴标签】
ylabel('t')【y轴标签】
hold on【同一幕布中绘制】
grid on【绘制,限制作用,加上网格线】
axis squre【绘制坐标系为正方形】