一.入门基础
1.基本知识
1.1 输入命令
以分号结尾不会打印变量的值
x = 1
y = x;
1.2 变量命名规则:以字母开头,并且仅包含字母、数字和下划线。
1.3 使用save命令将工作区中的变量保存到MAT文件的MATLAB特定格式文件中,文件名为datafile.mat。可以指定保存某个变量或者加载某个变量。
save datafile.mat
save data.mat x
load data.mat x
1.4 清空工作区,使用clear。
1.5 使用load命令加载MAT文件中的变量。
load datafile.mat
1.6 clear 函数清理工作区。clc 命令清理命令行窗口。
1.7 MATLAB中的常量pi,使用format long可以在命令行窗口中显示高精度浮点数,可以使用format short切换为低精度显示(默认)。
1.8 实时脚本
可以实时运行某行语句,包括运行节,创建节,以及设置节的布局方式等。
2.数组
2.1 用空格(或逗号)分隔数值时,MATLAB 会将这些数值组合为一个行向量,行向量是一个包含一行多列的数组 (1×n)。用分号分隔数值时,MATLAB 会创建一个列向量 (n×1)。
x = [1,2,3]
x = [1 2 3]
x = [1;2;3]
2.2 创建等间距的长向量,可以使用冒号:运算符并仅指定起始值和最终值。默认间隔为1。
x = [1:10]
2.3 创建指定间隔的长向量,可以使用冒号:运算符并仅指定起始值、间隔和最终值,起始值:间隔:最终值。
x = [1:2:10]
2.4 知道元素的个数,起始位置和终止位置,创建等间距向量采用函数:
linspace(first,last,number_of_elements)。
linspace(1,10,20)
2.6 使用转置运算符(’)将行向量转换为列向量。创建行向量并将其全部转置来创建列向量。注意此处使用圆括号来指定运算的顺序。
x = x'
x = (1:2:5)'
2.7 常用矩阵创建函数
% 创建 5X5的随机数矩阵(方阵)
x = rand(5)
% 创建5 x 1的矩阵
x = rand(5 ,1)
% 创建6 x 3的全零矩阵
x = zeros(6,3)
2.8 使用size可以获取矩阵的大小,结合rand可以创建同大小的随机矩阵。
2.9 采用括号()来索引数组元素,下标从1开始,如x(index),x(row,col)。
x(3)
x(2,4)
%范围某一范围内的数据,采用冒号(:)
x(2:4)
%范围第三行所有元素,冒号表示所有列
x(3,:)
%范围第4列所有元素,冒号表示所有行
x(:,4)
2.10 可以使用关键字end作为索引来访问数据。
x = data(end,3)
x = data(end - 1,5)
2.11 用作索引时,冒号运算符 : 可指代该维度中的所有元素。
x = data(:,2)
%最后两列数据
x = data(:,end - 1:end)
2.12 数组用[]表示,使用()来访问数组数据,需要注意()是不是用于改变运算顺序的,采用冒号(:)来指定数据的范围。
3.向量数组运算
3.1 向量可以执行四则运算,即对每个元素进行四则运算,相同大小的向量也可以进行加减。MATLAB函数可在单个命令中对整个向量或值数组执行数学运算。
s = sqrt(x)
3.2 可以使用max获取向量中的最大值。
xMa = max(x)
3.3 使用round对数据进行四舍五入。
3.4 采用点乘 运算符将两个大小相同的数据的对应元素相乘,采用*可以进行矩阵相乘。
%对应元素相乘
x = [1,2] .* [3,4]
%矩阵乘法
x = [1,2] * [1;2]
%对数组的每一行乘以不同的倍数
x = [1 2;3 4;5 6; 7 8] .* [1;2;3;4]
3.5 使用size获取矩阵的大小,使用max获取最大值及其索引,可以使用~忽略不需要的值。
[row,col] = size(x)
[maxValue,index] = max(x)
[minValue,index] = min(x)
[~,index] = max(x)
3.6 可以使用doc查看某个函数的文档,或者通过帮助文档来查看。
doc randi
4.绘制数据图
4.1 采用plot(x,y) 绘制数据图,x和y为长度相同的向量。
% 红色虚线,o标记数据点
plot(x,y,"r--o")
% 红色,*标记数据点,不使用线条
plot(sample,mass2,"r*")
4.2 每个绘图命令都会创建一个单独的绘图,要在同一张绘图上添加新绘图,需要使用hold on,要恢复默认绘图,使用hold off。
hold on
%绘制黑色(k)方形(s)标记无线条的数据
plot(sample,mass1,"ks")
plot(sample,mass1)
hold off
4.3 单独绘制一个向量时,会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1 到 n(向量中的元素数目)。
plot(v1)
4.4 plot接受附加输入,由属性名称和一个关联的值组成,在绘图参数和线条设定符之后添加属性名称-属性值对组。。
plot(y,"LineWidth",5)
plot(x,y,"ro-","LineWidth",5)
plot(sample,v1,"ro","LineWidth",4)
4.5 histogram 函数创建一个 x的直方图。将 “FaceColor” 设置为黄色 (“y”)。
histogram(x,"FaceColor","y")
4.6 使用**title("")**添加标题,**ylabel("")、xlabel("")为坐标轴轴添加标签,legend("")添加图例,使用xlim([min max])、ylim([min max])**设置坐标轴范围。
title("Sample Mass")
ylabel("Mass (g)")
legend("Exp A","Exp B")
%在标题中添加值
bar(data(3,:))
title("Sample " + sample(3) + " Data")
xlim([1990.0 2015.0])
ylim([2.50 5.00])
4.7 加载完文件中的数据后,可以使用usage查看数据,usage
变量表示加载的数据,NaN(即“非数值”)用于表示缺失数据。
%
res:蓝色 (b) 虚线 (--)
comm:黑色 (k) 点线 (:)
ind:洋红色 (m) 点划线 (-.)
%
hold on
plot(yrs,res,"b--")
plot(yrs,comm,"k:")
plot(yrs,ind,"m-.")
4.8 使用numel可以返回数组中元素数目,**fabs()**计算绝对值。
5.导入数据
5.1 以表的形式导入数据,采用**.**来访问每列的数据,可以将计算结果写入表格,可以对表格排序。表格的标题将自动识别为文件名。
5.2 导入.mat数据,包含的变量将自动创建。导入图像,图像将以像素数组的形式导入。通过导入工具可以按要求导入文本文件或电子表格数据,打开文件的预览,要导入的数据将以蓝色显示,缺失的数据将被NaN替代。
6.逻辑索引
6.1 使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。关系运算符(大于 >、小于<、等于== 和不等于 ~=);
6.2 逻辑数组作为数组索引,MATLAB 会提取索引为 true 的数组元素。逻辑索引在数组中可以重新赋值。
v = v1(v1 < 4)
s = sample(v1 < 4)
6.3 逻辑运算符 and (&) 以及 or (|) 来组合逻辑比较。
x = sample(sample > 10 & sample < 20)
x = sample(sample < 10 | sample > 20)
7.编程
7.1 MATLAB适合处理数组数据,因此对于单一的计算,可以直接将数组作为计算变量,而对于复杂的计算需要采用循环来计算。
7.2 决策分支if
%if语句执行块,通过缩进来控制,end作为结束符,if 判断条件可以不需要括号,语句后面没有冒号。
if doPlot == 1 plot(density)title("Sample Densities")xticklabels(element)ylabel("Density (g/cm^3)")
elseif...
else...
end
7.3 for循环
for idx = 1:7hold onplot(idx,density(idx),'*')hold offpause(0.2)
end
%通过length可以获取未知变量的长度
for idx = 1:length(density)hold onplot(idx,density(idx),'*')hold off%暂停0.5秒,更新绘图,可以显示动态效果pause(0.5)
end
8.复习
81.使用 loglog 函数(用法同 plot 函数),在每个坐标轴上使用对数刻度绘制数据;
loglog(lambda,s,".-")
xlabel("Wavelength")
ylabel("Intensity")
8.2 在x、y 处的点绘制成一个标记大小 (“MarkerSize”) 为 8 的红色方框 (“rs”);
hold on
plot(lambdaHa,sHa,"rs","MarkerSize",8)
hold off
8.3 可以添加数值滑块控件,通过滑块输入数值。
9.总结
https://matlabacademy.mathworks.com/R2020b/cn/portal.html?course=gettingstarted&s_tid=mlac_gettingstarted_ban#chapter=15&lesson=1§ion=1