赋值语句
# 使用等号(=) 创建变量 左侧 (x) 是变量的名称,其值为右侧 (pi) 的值 x = pi #函数使用 y = sin(-5)将当前工作区保存到 MAT 文件中
save data.mat将 MAT 文件中的变量加载到工作区
load data.mat清除工作区中的所有变量
clear清除命令行窗口中的所有文本
clc更改数值输出的显示方式
format long/short行向量
创建一个一行多列的数组,使用空格或者逗号分隔
x = [3 5] x = [3, 5]列向量
创建一个多行一列的数组,使用逗号分隔
x = [7; 9]矩阵
使用空格和分号来创建一个矩阵,即包含多行多列的数组。
x = [5, 6, 7;8, 9, 10] # 或 x = [5 6 7; 8 9 10]方括号内执行计算
x = [sqrt(10) pi^2]简便方法创建等间距的向量
y = 1:4指定间距 — 创建一个x的行向量,1-5 ,间距为0.5
x 1:0.5:5如果您知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数
创建一个1-10的向量,共包含5个元素
# linspace(first,last,number_of_elements) x = linspace(1, 10, 5)使用转置运算符( ’ ) 将行向量转为列向量
x = 1:3; x = x' xx =创建时通过一条命令将行向量转为列向量
# 创建1-5的行向量 间距为2 并转置成列向量 x = (1:2:5)' x使用内置函数创建随机方阵
x = rand(5)使用2个参数来创建非方阵
# 创建一个5行1列的数组 x = rand(5, 1)使用zeros 来创建全零矩阵
# 创建一个6行3列的全零矩阵 x = zeros(6, 3)使用size函数获取矩阵大小
# 创建一个与现有矩阵x大小相同的矩阵y y = rand(size(x))使用行、列索引从数组中提取值
# 加载 datafile 数据 并提取data中5行2列的数据 load datafile data(5, 2)使用end 作为行或列索引来引用最后一个元素
y = data(end, 3)end 关键字也支持算术运算
# 创建标量变量x, 值为data 的倒数第二行第三列 x = data(end-1, 3)只使用一种索引,那么矩阵会从第一列开始从上到下一次遍历每列
# data 为一个7*3的矩阵 那么索引8会遍历到第1行第1列的元素 data(8) #索引也支持变量 y = 1 z = 2 data(y, z)使用冒号运算符( : ) 可指代该维度中的所有元素
# 创建一个名为 density 的变量,其中包含名为 data 的矩阵中第 2 列上的所有元素 density = data(:,2)冒号运算符可以引用某个值范围
# 创建一个名为 volumes 的变量,其中包含 data 的最后两列的所有元素。 volumes = data(:,end-1:end)单个索引值可用于引用向量元素,如果多列依旧按照从上到下顺序索引
# 使用单个索引值创建一个名为 p 并且包含向量 density 中的第 6 个元素的变量。 p = density(6)单个索引值范围可用于引用向量元素的子集
#使用索引值范围创建一个名为 p 的向量,其中包含从 density 的第 2 个到第 5 个元素范围内的所有元素 p = density(2:5)自定义索引
# 自定义一个索引规则,提取 density 的第一个、第三个和第六个元素 A = [1,3,6]; density(A)结合使用索引和赋值来修改变量的元素
# 获取data 最后一列 v2 = data(:,end) # 将v2 中第一个元素更改为0.5 v2(1) = 0.5 #将data 第一行最后一列的元素值 改为0.5 data(1,end)=0.5常量值与数组中的所有元素进行计算
# 将v1 的每个元素都加1 r = v1 + 1向量与向量相加
vs = v1 + v2使用内置函数计算向量
vm = max(va) vr = round(va)矩阵乘法 使用 .*`
#创建一个名为 mass 的变量,其中包含 density 和 va 的按元素乘积。 mass = density .* va矩阵乘矩阵
# 4x2的矩阵 乘 1x4的矩阵 x = [1 2;3 4;5 6;7 8] .* [1; 2;3;4] 结果: x = 4x2 1 2 6 8 15 18 28 32size函数可以生成单个输出或者多个输出变量,使用方括号[]获得多个输出
# 使用dsize 接收size的值 值为一个2*1的矩阵 dsize = size(data) # 创建变量 dr 和 dc,其中分别包含变量 data 的行数和列数 [dr, dc] = size(data)可以使用 max 函数确定向量的最大值及其对应的索引值。max 函数的第一个输出为输入向量的最大值。执行带两个输出的调用时,第二个输出为索引值。
#创建变量 vMax 和 ivMax,其中分别包含 v2 向量的最大值和对应的索引值。 [vMax,ivMax] = max(v2)如果只需函数的第二个输出,可以使用波浪号字符 (~) 忽略特定输出
#获取 v2 中最小值的索引值。使用此索引从 density 中提取值 density = data(:,2) [~,ivMin] = min(v2); minData = density(ivMin)使用plot函数在一张图上绘制两个相同长度的向量(2个参数长度必须相同)
#创建一个绘图,其中 sample 位于 x 轴,mass1 位于 y 轴。 plot(sample,mass1)plot函数接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。具体参考: https://ww2.mathworks.cn/help/matlab/ref/linespec.html?lang=en
#绘制 mass2(y 轴)对 sample(x 轴)的图。在绘图中使用红色 (r) 星号 (*) 标记,并且不使用线条 plot(sample,mass2,"r*")每个绘图都创建了一个单独的绘图,要在一张图上,绘制2条线,hold on 命令保留之前的绘图,然后添加另一条线。
# 先保存上一张图 然后再绘制一张蓝色点图 hold on plot(sample,mass1,"b.")要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off。
hold off如果单独绘制一个元素,参数会作为y轴来使用,而x轴为向量的元素数目
plot(v1)可选输入参数,由一个属性和对应值组成
# 设置线条宽度为3 plot(v1, "lineWidth", 3) # 设置线条颜色为红色 plot(v1,"Color","r") #也可以通过.的方式来设置对应的属性 p = plot(v1) p.Color="r" p.LineWidth = 5绘图参数和线条设定符之后添加属性名称-属性值对组
# 绘制 v1(y 轴)对 sample(x 轴)的图,使用红色 (r) 圆圈 (o) 标记,线宽为 4。 plot(sample,v1,"r-o","LineWidth",4)为绘图添加标题
title("Plot Title")给x, y轴添加标签,
xlabel("Mass(x)") ylabel("Mass(g)")使用 legend 函数为绘图添加图例
legend("Exp A","Exp B")绘图注释中也可以使用变量的值
bar(data(3,:)) title("Sample " + sample(3) + " Data")关系运算符(> 、<、== 和 ~=) 执行两个值之间的比较。相等为1( true ),不相等为0( false )。
# 使用 < 测试pi是否小于4 test = pi < 4当向量或者矩阵与某个标量进行比较,返回值是与原向量或矩阵大小相同的 0 1组成的向量和数组。
# 测试向量v1 中是否有小于4 的元素 test = v1 < 4使用逻辑数组作为数组索引,那么此时只会返回逻辑为true的所有元素
# 获取v1 中所有小于 4 的元素 v = v1(v1 < 4) #创建一个名为 s 的变量,其中包含 sample 中与 v1 中小于 4 的元素所在位置对应的元素。 s = sample(v1 < 4)使用逻辑索引在数组中重新赋值
#修改 v1,将其中任何小于 4 的值都替换为 0 v1(v1<4)=0使用逻辑运算符and(&) 以及or(|)来组成逻辑比较
#获取 sample 中介于 10 和 20 之间的值。 sample(sample>10 & sample<20)仅当条件为 true 时,才执行 if 代码块的主体。
x = randi([0 1]) if x == 1 y = 3 end希望在条件不成立时执行其他代码,那么可以使用else关键字
x = rand if x > 0.5 y = 3 else y = 4 end希望多重if else 判断 则可以写成elseif
x = rand if x > 0.5 y = 3 elseif x > 1 y = 4 else y = 5 end如果同一个代码需要执行多次 那么可以使用for 循环来实现
# 打印 for c = 1:3 disp(c) end # 如果需要对未知长度的向量执行循环, 可以改用length 函数 for idx = 1:length(density) disp(idx) end