入门
MATLAB的语句后面要加分号;表示结束语句。
MTALAB命令行窗口的显示格式
指令 | 说明 | 实例 |
format | 默认格式 | 271.82 |
format short / format long | 显示小数点后4位 / 14位 | 2718.2 / 2.746468468 |
format short e / format long e | 显示小数点后4位 / 14,科学计数法表示 | 2.7183e+000 / 2.7182815286465e+000 |
format short g / format long g | 在format short / format long中自动选择格式 /// 在format short e / format long e中自动选择格式 |
常用的MATLAB控制命令
指令 | 说明 |
exit、quit | 退出MTALAB会话框 |
format | 数学格式 |
clc | 清空当前的命令行窗体 |
dos \ unix | 执行DOS、UNIX系统指令 |
cd | 切换路径 或 显示当前路径 |
pwd | 显示当前路径 |
dir、ls | 显示当前路径下的文件 |
what | 显示当前路径下的MATLAB文件 |
which | 判断当前文件的所在路径 |
clear | 清空 |
whos | 查看当前所有变量的名;行列数;大小;类型;属性 |
class(A) | 查看变量A的数据类型 |
help 变量名:能够查看帮助文档。
矩阵和数组
我们先要知道几个基本概念
数组:有序数据的集合,数组的每一个成员都属于同一种数据类型
向量:从编程上考虑,向量就是一维数组。但从数学上考虑,向量是 1xN 或 Nx1 的矩阵,行向量和列向量。MATLAB的基本运算单位就是矩阵和向量。
矩阵:矩阵就是矩阵,没得解释。
创建向量
创建行向量
逐个在[]中输入向量元素,创建向量的时候元素彼此之间可以使用空格或者逗号“,”作为间隔符。
x = [1 2 pi 5] x = 1 3 3.14 5
利用运算符“:”创建向量
x = 1:10 x = 1 2 3 4 5 6 7 8 9 10
x = 0:0.1:1 x = 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
函数linspace(x1,x2,n)用来创建指定区间指定个数的函数,间隔为$\frac{x_1-x_2}{n-1}$
x = linspace(1,2,5) 1 1.25 1.5 1.75 2
函数logspqce(x1,x2,n)被用来创建对数空间的向量,第一个元素为$10^{x_1}$,最后一个元素为$10^{x_2}$,n为向量元素个数。
x = logspace(1,3,5) 10 31.6 100 316 1000
创建列向量
直接在[]括号中输入即是列向量
A = [1;2;3;4;5;6]
转置的方法创建列向量
B = (1:6)'
$\begin{matrix}
1\\ 2\\ 3\\ 4\\ 5\\ 6\end{matrix}$创建矩阵
矩阵行与行之间需要使用分号“;”间隔。矩阵一行元素之间使用逗号“,”或者空格“ ”间隔。
直接输入法
A = [1 2 3;4 5 6;7 8 9]
B = [1:3;4:6;7:9]
$\begin{matrix}
1&2&3\\ 4&5&6\\ 7&8&9\end{matrix}$索引
MATLAB数组或矩阵的索引都是从1开始的,并且可以索引最后一个元素,MATLAB的步长放在中间,矩阵的数数是“竖”的数的,Python是从零开始数的,而且矩阵是从“横”的数的。
访问第三个元素:
A(3)
访问向量第一、第三、第五个元素:
A([1 3 7])
访问向量第一、第三、第五个元素:
A([1:2:5])
访问最后四个元素:
A([end-3:end])
重复访问向量中的元素:
A([1:5,5:-1:1])
访问向量元素中的结果是创建新的向量,对向量中超过最后值索引的数据赋值,会把之前没有的值都填上。
使用索引访问矩阵元素的方法
矩阵元素的访问 | 说明 |
A(i,j) | 第i行第j列 |
A(I,J) | 访问由向量I和J指定的矩阵A中的元素 |
A(i,:) | 访问第i行的所有元素 |
A(:,j) | 访问第j列的所有元素 |
A(:) | 访问矩阵A中的所有元素 |
A(N) | 访问第N个元素 |
[]是创建,()是索引。索引中的分隔符是引号“:”
MATLAB的矩阵生成函数
函数 | 说明 |
zeros | 产生元素全为0的矩阵 |
ones | 产生元素全为1的矩阵 |
eye | 产生单位矩阵 |
rand | 产生均匀分布的随机矩阵,数字范围(0,1) |
randn | 产生均值为0,反差为1的正态分布随机矩阵 |
diag | 获得矩阵的对角线元素,也可生成对角矩阵 |
magic | 产生幻方阵,该方阵的行元素之和与列元素之和都相等 |
矩阵的基本运算
运算命令 | 说明 | 运算命令 | 说明 |
A' | 转置 | rank | 求矩阵的秩 |
A^n | 求冥 | eig | 求矩阵的特征向量 |
A*B | 矩阵乘法 | norm | 求矩阵的范数 |
A/B | 矩阵右除 | A\B | 矩阵左除 |
inv | 求逆,注意不是所有的矩阵都有逆矩阵 |
基本数学函数和圆整和求余函数
函数 | 说明 | 函数 | 说明 |
exp | 指数函数 | sqrt | 平方根函数 |
fix | 向0取整 | rem(i,j) | i对j求余 |
floor | 向$-\infty $取整 | ceil | 向$+\infty $取整 |
round | 向最近的整数取整 | mod(i,j) | i对j取模 |
矩阵或数组的常用操作
函数 | 说明 | 函数 | 说明 |
size | 获取矩阵的行列数 | numel | 获取矩阵的元素个数 |
disp | 显示矩阵或者字符串的内容 | cat | 合并不同的矩阵或数组 |
reshape | 修改矩阵的行数和列数 |
稀疏矩阵
多维数组
数据类型
数据类型 | 说明 |
double | 双精度数据类型 |
single | 单精度数据类型 |
unit8 / unit16 / unit32 / unit64 | 无符号*位整数 |
int8 / int16 / int32 / int64 | 有符号*位整数 |
空数组
创建空数组的几种方法:
A = []
B = ones(2,3,0)
C = randn(2,3,4,0)
~=不等于
==等于
&|~与或非
字符串 char
字符串使用[]进行拼接的时候,若使用逗号“,”作为不同字符串之间的分隔符,相当于扩充字符串;若使用分号“;”作为不同字符串之间的分隔符,相当于扩展字符串成为二维三维...
常用的字符串操作函数
函数 | 说明 |
char | 创建字符串;将数值转变成字符串 |
blanks | 创建空白的字符串 |
deblank | 将字符串尾部的空格删除 |
ischar | 判断变量是否为字符类型 |
strcmp | 比较字符串是否一致 |
upper / lower | 将字符串的字符转成大写 / 后者相反 |
num2str / int2str | 数字转变成字符串 / 整数变成字符串 |
格式化字符
字符串 | 说明 | 字符串 | 说明 |
%c | 显示单一的字符 | %e | 科学计数 |
%d | 整数 | %s | 字符串 |
%f | 浮点数据 | %o | 八进制 |
%u | 无符号整数 | %x | 十六进制 |
获取用户输入
A = input(prompt); # A的类型为数字
A = input(prompt,'s'); # A的类型为字符串
格式化输出
s = sprintf(format,A)
元胞数组
组成元胞数组的元素可以是任意一种数据类型
A = {zero(2,2,2),'hello';17.35,1:100}
$$A= \begin{matrix}
[2x2x2 double] & 'hello'\\ [17.35000] & [1x100 double]\end{matrix}$$可以用cell来创建元胞数组,用花括号来索引“{}”
matlab程序中,有时候会看到两个百分号一起:%%,且当光标在这一部分时,颜色会不一样。比如:
因为%%在matlab代码中的作用是将代码分块,上下两个%%之间的部分作为一块,在运行代码的时候可以分块运行,查看每一块代码的运行情况。常用于调试程序。
分块运行的方法有两种:
第一种,将光标放置在要运行的那一块中,然后在工具栏中选择运行节,英文为Run Section
或
第二种,将光标放置在要运行的那一块中,直接按CTRL+ENTER也可以实现分块运行
使用案例:
比如你想在本文第一张图中代码绘制的figure中加一个图例,可能你要重新运行整个代码,但分块运行你只要加上图例代码后,按下CTRL+ENTER
就实现了分块代码的运行了
另外在有时候需要逐步向别人展示代码运行的结果,用%%分块以后拆开运行,也是很好的选择。或有两个方法进行比较,也可以写在一个文件中分块运行。
但要注意前后变量的承接,变动关系等等。disp() 打印