1.MATLAB产品说明
1.主要功能
用于科学和工程计算的高级语言
用于为迭代探查、设计和问题求解而设计的桌面环境
用于可视化数据的图形和用于创建自定义绘图的工具
用于曲线拟合、数据分类、信号分析、控制系统优化和许多其他任务的APP
用于各种工程和科学应用程序的附加功能工具箱
用于构建包含自定义用户界面的应用程序的工具
用于C/C++、Java、Net、Python、SQL、Hadoop等的接口
用于将MATLAB程序与最终用户共享的免版权费部署选项
2.桌面基础知识
桌面包括下列面板:
当前文件夹 - 访问你的文件
命令行窗口 - 在命令行输入命令
工作区 - 浏览你创建或从文件导入的数据
使用MATLAB时,可发出创建变量和调用函数的命令。例如:
matlab
a = 1 % MATLAB将变量a添加到工作区,并在命令行窗口中显示结果
b = 2
c = a + b % 创建更多变量
如果未指定输出变量,MATLAB将使用变量ans(answer)来储存计算结果。
matlab
sin(a)
ans = 0.8415
如果语句以分号结束,MATLAB会执行计算,但不在命令行窗口中显示输出。
matlab
e = a*b;
按向上和向下箭头键可以重新调用以前的命令。在空白行中或在键入命令的前几个字符之后按箭头键。例如,要重新调用命令b = 2,请键入b,然后按向上箭头键。
3.矩阵和数组
1.数组创建
要创建每行包含4个元素的数组,请使用逗号或空格分隔各元素。
matlab
a = [1 2 3 4] % 行向量
要创建包含多行的矩阵,请使用分号分隔各行。
matlab
a = [1 3 5;2 4 6;7 8 10]
创建矩阵的另一种方法是使用ones、zeros或rand等函数。例如创建一个由零组成的5*1列向量。
matlab
z = zeros(5,1)
2.矩阵和数组运算
MATLAB允许你使用单一的算术运算符或函数来处理矩阵中的所有值。
matlab
a = [1 3 5;2 4 6;7 8 10]
a + 10
% 结果
ans = 3*3
11 13 15
12 14 16
17 18 20
要转置矩阵,请使用单引号:
matlab
a'
ans = 3*3
1 2 7
3 4 8
5 6 10
你可以使用*运算符执行标准矩阵乘法,这将计算行与列之间的内积。例如,确认矩阵乘以其逆矩阵可返回单位矩阵:
matlab
p = a*inv(a)
p不是整数值矩阵,MATLAB将数字储存为浮点数,算术运算可以区分实际值与其浮点表示之间的细微差别。使用format命令可以显示更多小数位数:
matlab
format long
p = a*inv(a)
使用以下命令将显示内容重置为更短格式:
matlab
format sort
format仅影响数字显示,而不影响MATLAB对数字的计算或保存方式。
要执行元素级乘法(而非矩阵乘法),请使用(.*)运算符:
matlab
p = a.*a
% 结果
p = 3*3
1 9 25
4 16 36
49 64 100
乘法、除法和幂的矩阵运算分别具有执行元素级运算的对应数组运算符。例如,计算a的各个元素的三次方:
matlab
a.^3
3.串联
串联是连接数组以便形成更大数组的过程,成对的方括号[ ]即为串联运算符。
matlab
A = [a,a]
% 结果
A = 3*6
1 3 5 1 3 5
2 4 6 2 4 6
7 8 10 7 8 10
使用逗号将彼此相邻的数组串联起来称为水平串联。每个数组必须具有相同的行数。同样,如果各数组具有相同的列数,则可以使用分号垂直串联。
matlab
A =[a;a]
% 结果
1 3 5
2 4 6
7 8 10
1 3 5
2 4 6
7 8 10
4.复数
复数包含实部和虚部,虚数单位是-1的平方根。
matlab
sqrt(-1)
ans = 0.0000 + 1.0000i
要表示复数的虚部,请使用i或者j。
matlab
c = [3+4i,4+3j;-i,10j]
4.数组索引
MATLAB中的每个变量都是一个可包含许多数字的数组,如果要访问数组的选定元素,请使用索引。例如,假设有4*4矩阵A:
matlab
A = [1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
引用数组中的特定元素有2种方法。最常见的方法是指定行和列下标,例如:
matlab
A(4,2)
另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列:
matlab
A(8)
使用单一下标引用数组中特定元素的方法称为线性索引。
如果尝试在赋值语句右侧引用数组外部元素,MATLAB会引发错误:
matlab
test = A(4,5)
不过你可以在赋值语句左侧指定当前维外部的元素,数组大小会增大以便容纳新元素:
matlab
A(4,5) = 17
A = 4*5
1 2 3 4 0
5 6 7 8 0
9 10 11 12 0
13 14 15 16 17
要引用多个数组元素,请使用冒号运算符,这使你可以指定一个格式为start : end的范围。例如:
matlab
A(1:3,2)
% 结果
2
6
10
单独的冒号指定该维中的所有元素。例如:
matlab
A(3,:)
ans = 1*5
9 10 11 12 0
此外,冒号运算符还允许你使用较通用的格式start : step : end创建等间距向量值。
matlab
B = 0:10:100
B = 0 10 20 30 40 50 60 70 80 90 100
如果省略中间的step,MATLAB会使用默认步长值1。
5.文本和字符
1.字符串数组中的文本
当你处理文本时,将字符序列括在双引号中。可以将文本赋给变量:
matlab
t = "hello world";
如果文本中包含双引号,请在定义中使用2个双引号。
matlab
q = "something ""quoted"" and something else"
% 结果
q = "somnething "quoted" and something else"
与所有MATLAB变量一样,t和q为数组。它们的类或数据类型是string。
matlab
whos t
要将文本添加到字符串的末尾,请使用加号运算符:
matlab
f = 71;
c = (f-32)/1.8;
tempText = "Temperature is" + c + "C"
% 结果
tempText = "Temperature is 21.6667C"
与数值数组类似,字符串数组可以有多个元素,使用strlength函数求数组中每个字符串的长度:
matlab
A = ["a","bb","ccc"";"dddd","eeeeee","ffffff"]
strlength(A)
% 结果
ans =
1 2 3
4 6 7
2.字符数组中的数据
有时候字符表示的数据并不对应到文本,你可以将此类数据储存在数据类型为char的字符数组中。字符数组使用单引号:
matlab
seq = 'GCTAGAATCC';
whos seq
数组中的每个元素都包含单个字符:
matlab
seq(4)
ans = 'A'
使用方括号串联字符数组,就像串联数值数组一样。
matlab
seq2 = [seq'ATTAGAAACC']
seq2 = 'GCTAGAATCCATTAGAAACC'
6.调用函数
MATLAB提供了大量执行计算任务的函数。在其他编程语言中,函数等同于子例程或方法。
要调用函数,例如max,请将其输入参数括在圆括号中:
matlab
A = [1 3 5];
max(A)
ans = 5
如果存在多个输入参数,请使用逗号加以分隔:
matlab
B = [3 6 9];
union(A,B)
ans = 1 3 5 6 9
通过将函数赋值给变量,返回该函数的输出:
matlab
maxA = max(A)
maxA = 5
如果存在多个输出参数,请将其括在方括号中:
matlab
[minA,maxA] = bounds(A)
% 结果
minA = 1
maxA = 5
要调用不需要任何输入且不会返回任何输出的函数,请只键入函数名称:
matlab
clc % 清空命令行窗口
close all % 关闭所有窗口
clear all % 清空工作区变量