MATLAB入门

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 % 清空工作区变量
相关推荐
小刘|30 分钟前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
jjyangyou34 分钟前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
van叶~1 小时前
算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝
c++·算法
简简单单做算法1 小时前
基于Retinex算法的图像去雾matlab仿真
算法·matlab·图像去雾·retinex
云卓SKYDROID1 小时前
除草机器人算法以及技术详解!
算法·机器人·科普·高科技·云卓科技·算法技术
半盏茶香2 小时前
【C语言】分支和循环详解(下)猜数字游戏
c语言·开发语言·c++·算法·游戏
徐子童2 小时前
双指针算法习题解答
算法
想要打 Acm 的小周同学呀2 小时前
LRU缓存算法
java·算法·缓存
劲夫学编程3 小时前
leetcode:杨辉三角
算法·leetcode·职场和发展
毕竟秋山澪3 小时前
孤岛的总面积(Dfs C#
算法·深度优先