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 % 清空工作区变量
相关推荐
江畔柳前堤5 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore6 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考8 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX9 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面9 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号10 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽10 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI10 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者11 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者12 小时前
【征程6】校准量化中HistogramObserver解析
算法