0%

MATLAB学习手册

​ MATLAB是MATrix LABoratory(矩阵实验室)的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C、C++、Java、Python和FORTRAN)编写的程序。下面是对MATLAB官方中文文档的学习总结。

入门

矩阵和数组

​ 所有 MATLAB 变量都是多维数组,与数据类型无关。矩阵是指通常用来进行线性代数运算的二维数组。

数组创建

一般数组的创建

  • 在每行中,用 , 或者 空格来分隔每个元素;
1
a = [1 2 3 4]

  • ; 来分隔每行,形成矩阵;
1
a = [1 2 3; 4 5 6; 7 8 9]

截屏2020-03-05下午3.26.33.png

函数创建矩阵

ones 函数
  • 格式:ones(行数, 列数)
  • 功能:创建由1构成的行数⨉列数的矩阵
1
ones(2,3)

zeros 函数
  • 格式:zeros(行数, 列数)
  • 功能:创建由0构成的行数⨉列数的矩阵
1
zeros(2,3)

矩阵和数组运算

​ MATLAB 允许使用单一的算术运算符或函数来处理矩阵中的所有值。

​ 比如 sin(a) 即可将a矩阵中的所有值带入 sin函数。

命令 功能
a' 矩阵转置
inv(a) 矩阵求逆
a*b 矩阵的乘法
a.*b 矩阵元素级乘法

矩阵串联

  • [a, a] 水平串联
  • [a; a] 垂直串联

数组索引

注意:MATLAB中数组的开始下标为 1。

命令 功能
a(行下标, 列下标) 得到指定行和列下标的元素
a(下标) 用单一下标按顺序向下遍历每一列,得到单一元素
a(开始行下标:结束行下标, 列下标) 得到指定列,从开始行到结束行的元素数组
a(:, 列下标) 得到指定列的元素数组

工作变量

​ 工作区包含在 MATLAB 中创建或从数据文件或其他程序导入的变量。

  • whos 可以查看工作区的内容。
  • 退出 MATLAB 后,工作区变量不会保留。使用 save 命令保存数据以供将来使用 save myfile.mat
  • 要清除工作区中的所有变量,请使用 clear 命令。
  • 使用 load 将 MAT 文件中的数据还原到工作区。load myfile.mat

文本与字符

  • MATLAB中用 "" 定义字符;
  • +连接字符或数字;

调用函数

  • 格式:[输出变量1, 输出变量2...] = functionName(输入变量1, 输入变量2...)
  • 将任何字符输入括在单引号中
  • clc 函数清空命令行窗口

二维图和三维图

二维图

​ 用 plot 函数创建二维线图。

1
2
3
4
5
6
x = 0:pi/100:2*pi; %自变量数组
y = sin(x); %因变量函数
plot(x,y) %显示x-y图像
xlabel('x') %x轴标题
ylabel('sin(x)') %y轴标题
title('Plot of the Sine Function') %总标题

​ 利用hold on一个窗口显示两个图。

1
2
3
4
5
6
7
8
9
x = 0:pi/100:2*pi; 
y = sin(x);
plot(x,y)
hold on %保留住现窗口
%显示第二个图形
y2 = cos(x);
plot(x,y2,':')
legend('sin','cos')
hold off %关闭窗口

三维图

  • 使用 meshgrid 在此函数的域中创建一组 (x,y) 点
  • surf 创建曲面图
1
2
3
mat[X,Y] = meshgrid(-2:.2:2); 
Z = X .* exp(-X.^2 - Y.^2);
surf(X,Y,Z) %创建曲面

子图

​ 使用 subplot 函数可以在同一窗口的不同子区域显示多个绘图。

格式:subplot(a, b, c)

功能:a⨉b网格中的第c个位置显示图形。

1
2
3
4
5
6
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));
subplot(2,2,1); mesh(X); title('X');
subplot(2,2,2); mesh(Y); title('Y');
subplot(2,2,3); mesh(Z); title('Z');
subplot(2,2,4); mesh(X,Y,Z); title('X,Y,Z');