matlab的基本使用
标准正态曲线
索引和修改数组
更改数组中的值
data的最后一列
v2 = data(:,end)
可以结合使用索引和赋值来修改变量的元素。
v2(1) = 0.5
将 data 的第一行和最后一列中元素的值更改为 0.5。
data(1,end) = 0.5
将data第一列等到第二列
data(:,1) = data(:,2)
数组计算对
向量执行数组运算
将 1 与 v1 的每个元素相加,然后将结果存储在名为 r 的变量中。
r = v1 + 1
创建一个向量 vs,它是向量 v1 和 v2 的和。
vs = v1 + v2
创建一个变量 va,其值为 vs/2(平均体积)。
va = vs/2
创建一个变量 vm,其值为 va 向量的最大值。
vm = max(va)
使用 round 函数创建一个名为 vr 的变量,其中包含四舍五入为整数的平均体积 va。
vr = round(va)
.* 运算符执行按元素乘法,允许您将两个大小相同的数组的对应元素相乘。
z = [3 4] .* [10 20]
z =
30 80
调用函数
获取函数的多个输出
size 函数可以应用于数组,以生成包含数组大小的单个输出变量。
s = size(x)
size 函数可以应用于矩阵,以生成单个输出变量或两个输出变量。使用方括号 ([ ]) 获得多个输出。
[xrow,xcol] = size(x)
可以使用 max 函数确定向量的最大值及其对应的索引值。max 函数的第一个输出为输入向量的最大值。执行带两个输出的调用时,第二个输出为索引值。
[xMax,idx] = max(x)
创建一个名为 x 的矩阵,其中包含 1 到 20 范围的随机整数,行数为 5,列数为 7
x = randi(20,5,7)
绘制数据图
绘制向量图
可以使用 plot 函数在一张图上绘制两个相同长度的向量。
plot(x,y)
以上命令将会绘制一条红色 (r) 虚线 (--),并使用圆圈 (o) 作为标记。您可以在线条设定的文档中了解有关可用符号的详细信息。
plot(x,y,"r--o")
请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线。
hold on
然后绘制 mass1(y 轴)对 sample(x 轴)的图,并带有黑色 (k) 方形 (s) 标记,不带线条。
plot(sample,mass1,"ks")
启用保留状态时,将继续在同一坐标区上绘图。要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off。
hold off
当您单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1 到 n(向量中的元素数目)。
plot(v1)
plot 函数接受可选的附加输入,这些输入由一个属性名称和一个关联的值组成。
plot(y,"LineWidth",5)
使用 plot 函数时,您可在绘图参数和线条设定符之后添加属性名称-属性值对组。
plot(x,y,"ro-","LineWidth",5)
可以使用绘图注释函数(例如 title)在绘图中添加标签。此类函数的输入是一个字符串。MATLAB 中的字符串是用双引号 (") 引起来的。
title("Plot Title")
使用 ylabel 函数添加标签 "Mass (g)"。
ylabel("Mass (g)")
您可以使用 legend 函数为绘图添加图例。
legend("a","b","c")
用电量数据存储在一个名为 electricity.mat 的文件中。将 MAT 文件加载到 MATLAB 中。
然后在脚本中输入 usage 以查看矩阵。
load electricity.mat
usage
usage 变量中有一个元素的值为 NaN。将该值替换为 2.74。
usage(2,3) = 2.74
居民数据存储在第一列中。创建一个变量 res,其中包含 usage 的第一列数据。
res = usage(:,1)
商业数据和工业数据分别存储在第二列和第三列。创建变量 comm 和 ind,分别包含 usage 第二列和第三列的数据。
comm = usage(:,2)
ind = usage(:,3)
创建一个名为 yrs 的向量,表示从 1991 年开始到 2013 年结束的年份。
yrs = (1991:2013)
创建一个包含所有三列数据的绘图。使用 yrs 作为 x 数据。按下面的顺序和绘图设定绘制数据:
res:蓝色 (b) 虚线 (--)
comm:黑色 (k) 点线 (:)
ind:洋红色 (m) 点划线 (-.)
plot(yrs,res,"b--")
hold on
plot(yrs,comm,"k:")
plot(yrs,ind,"m-.")
hold off
将标题 "July Electricity Usage" 添加到现有绘图。用值 "res"、"comm" 和 "ind" 创建图例。
title("July Electricity Usage")
legend("res","comm","ind")
项目
音频频率
加载文件 Cchord.mat。
创建一个名为 n 的变量,表示 y 中的元素数目。然后使用 n 创建等间距向量 t,该向量以 0 开头,以 n-1 结尾,元素之间的间距为 1。
load("Cchord.mat")
[~ , n] = size(y)
t = (0: 1: n-1)
将 t 除以 fs。将输出赋给同一个变量 t。然后绘制 y 对 t 的图。
t = t/fs
plot(t,y)
f 将包含从 0 到 fs 的频率。主频位于 f 的开头位置。您可以使用 xlim 函数放大所关注的区域。
xlim([xmin xmax])
导入数据
以表的形式导入数据
要提取表变量,可以使用圆点表示法:
data.VariableName
如果您正在使用表,您可能希望将相关数据放在一起。您可以将计算结果赋给表,而不是创建单独的变量。
data.HeightMeters = data.HeightYards*0.9144
如果变量 data.HeightMeters 不存在,MATLAB 将在表中创建名为 HeightMeters 的新变量。
排序
elements = sortrows(elements,'Mass') 最小到最大
elements = sortrows(elements,'Mass','descend') 最大到最小
尝试提取表的前三行:
top3 = elements(1:3,:)
逻辑数组
逻辑索引
关系运算符(例如 >、<、== 和 ~=)执行两个值之间的比较。相等或不相等比较的结果为 1 (true) 或 0 (false)。
test = pi < 4
您可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。
[5 10 15] > 12
ans =
0 0 1
您可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素。以下示例将会提取 v1 中大于 6 的所有元素。
v = v1(v1 > 6)
v =
6.6678
9.0698
您也可以对两个不同向量使用逻辑索引。
v = sample(v1 > 6)
s =
18
23
您可以使用逻辑索引在数组中重新赋值。例如,如果您要将数组 x 中等于 999 的所有值都替换为值 1,请使用以下语法。
x(x==999) = 1