当前位置: 首页 > news >正文

Matlab数据类型

本篇介绍我在南农matlab课程上的所学,我对老师ppt上的内容重新进行了整理并且给出代码案例。主要内容在矩阵。如果真的想学matlab,我不认为有任何文档能够超过官方文档,请移步至官网,本篇说实话只是写出来给自己和学弟学妹作期末复习用的,没有任何学习价值。还是那句话,真想学明白,请看官方文档。

Matlab数据类型

  • 数值
  • 结构
  • 元胞
  • format
  • 预定义变量
  • 内存变量的管理
  • 逻辑运算与关系运算
    • 逻辑运算
    • 关系运算
  • 序列
  • 矩阵
    • 创建矩阵
    • 特殊矩阵的创建
    • 利用 M 文件或 TXT 文件建立矩阵
      • 使用 `.m` 文件创建矩阵
      • 使用 `.txt` 文件读取纯数据矩阵
    • 矩阵切片
      • MATLAB 中的矩阵切片(索引)操作
      • 基本语法
    • 矩阵运算
      • 1. 基础算术运算符
      • 2. 点运算符(逐元素操作)
      • 3. 常用数学函数
      • 4. 矩阵变换函数
      • 5. 矩阵运算函数
      • 6.向量内积/外积
      • 7.其他函数
  • 字符串
    • 创建字符串以及字符串数组
    • 字符函数

matlab默认显示运算结果,但在赋值语句后加分号只执行赋值操作

数值

双精度与单精度:double, single
符号整型与无符号整型:int8, unit8
实型与复型:real, imag

结构

structure

元胞

cell

% 注释

format

format 只影响输出格式不影响数据存储

代码含义
format 显示小数点后4位
format long小数点后15位
format short e5位有效数字科学计数法
format long e16位有效数字科学计数法
format rat近似有理数

% 小数点后4位
>> format
>> pians =3.1416% 小数点后15位
>> format long
>> pians =3.141592653589793% 5位有效数字的科学计数法
>> format short e
>> pians =3.1416e+00% 16位有效数字的科学计数法
>> format long e
>> pians =3.141592653589793e+00% 近似有理数
>> format rat
>> pians =355/113   

预定义变量

变量名表示数值
ans 缺省变量名
pi 圆周率
eps浮点运算的相对精度
inf 正无穷
NaN不定值0/0
realmax/realmin最大/最小的浮点数
i,j虚数单位
nargin,nargout所用函数的输入/输出变量数目
>> 1ans =1>> pians =3.1416>> epsans =2.2204e-16>> infans =Inf>> NaNans =NaN>> realmaxans =1.7977e+308>> realminans =2.2251e-308>> ians =0.0000 + 1.0000i>> jans =0.0000 + 1.0000i

内存变量的管理

whos, who显示workspace中的变量名,clear删除workspace中的所有变量

>> a=1,b=2a =1b =2>> who您的变量为:a  b  >> whosName      Size            Bytes  Class     Attributesa         1x1                 8  double              b         1x1                 8  double>> clear
>> whos
>>           

逻辑运算与关系运算

逻辑运算

运算符含义
&
``
~

关系运算

运算符含义
>大于
<小于
>=大于等于
<=小于等于
==等于
~=不等于

序列

% 从1开始到4结束每隔0.5取一个
>> 1:0.5:4ans =1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000% 从1开始到2结束一共有10个等差的数
>> linspace(1,2,10)ans =1.0000    1.1111    1.2222    1.3333    1.4444    1.5556    1.6667    1.7778    1.8889    2.0000% 从10^1开始到10^2结束一共有10个等比的数
>> logspace(1,2,10)ans =10.0000   12.9155   16.6810   21.5443   27.8256   35.9381   46.4159   59.9484   77.4264  100.0000

矩阵

matlab中的矩阵是按列存放的,也就是说你如果用序列创建矩阵,是一列一列依次填满的。

创建矩阵

方括号括起来表示矩阵,分号表示换行,同行元素间以空格或逗号隔开,矩阵元素可以是运算表达式

>> mat = [1 2 3 ; 4 5 6]mat =1     2     34     5     6

特殊矩阵的创建

函数作用
zeors(m,n)产生 m × n m\times n m×n零矩阵,方阵情况时可以省略第二个参数
zeros(size(A))产生与矩阵A同样大小的零矩阵
eye(m,n)构建单位矩阵
ones(m,n)构建全1矩阵
randi([a, b], m, n)元素在[a, b]之间的 m × n m\times n m×n随机矩阵
>> zeros(3,4)ans =0     0     0     00     0     0     00     0     0     0>> eye(3,4)ans =1     0     0     00     1     0     00     0     1     0>> ones(3,4)ans =1     1     1     11     1     1     11     1     1     1>> randi([10,50], 5 ,5)ans =47    21    49    27    1115    32    49    47    4447    49    29    42    4835    49    42    49    3713    16    15    36    41

利用 M 文件或 TXT 文件建立矩阵

可以通过 .m 脚本文件或 .txt 文本文件创建较大、复杂的矩阵。这样做的好处是便于维护、复用或从外部导入数据。

使用 .m 文件创建矩阵

  1. 打开 MATLAB 自带的 Editor 或使用任意文本编辑器。

  2. 输入如下内容(定义一个矩阵 mymat):

    % 文件名:mymatrix.m
    mymat = [1, 2, 3;4, 5, 6;7, 8, 9
    ];
    
  3. 将文件保存为 mymatrix.m,并确保保存在 MATLAB 当前工作目录中。

    >> mymatmymat =1     2     34     5     67     8     9
    

使用 .txt 文件读取纯数据矩阵

适用于数据文件中只包含纯数字(不含变量名)。

  1. 创建一个名为 mymatrix.txt 的文本文件,内容如下:

    1 2 3
    4 5 6
    7 8 9
    
  2. 在 MATLAB 中读取该文件内容为矩阵:

    mymat = load('mymatrix.txt');
    

    或使用更通用的函数:

    mymat = readmatrix('mymatrix.txt');
    

矩阵切片

MATLAB 中的矩阵切片(索引)操作

矩阵的切片操作使用括号 ( , ) 表示,其中:

  • 前一部分表示 行的索引
  • 后一部分表示 列的索引
  • 可以使用数字、向量、冒号 :、关键字 end 等方式指定位置。

基本语法

A(i, j)           % 取第 i 行第 j 列的元素
A(i, :)           % 取第 i 行的所有列
A(:, j)           % 取第 j 列的所有行
A(m:n, p:q)       % 取第 m 到 n 行、第 p 到 q 列的子矩阵
A([1 3], [2 4])   % 取第 1、3 行 和第 2、4 列交叉形成的子矩阵
A(end, :)         % 取最后一行的所有列
A(:, end-1:end)   % 取最后两列的所有行
>> A = [1 2 3; 4 5 6; 7 8 9]A =1     2     34     5     67     8     9>> A(2, 3)ans =6>> A(1, :)ans =1     2     3>> A(:, 2)ans =258>> A(1:2, 2:3)ans =2     35     6>> A([1 3], [1 3])ans =1     37     9>> >> A(end, :)ans =7     8     9>> A(:, end-1:end)ans =2     35     68     9

矩阵运算

数的运算是矩阵运算的特例,所以一并包含在其中。

1. 基础算术运算符

运算符含义说明
+加法元素逐项相加,要求维度一致
-减法元素逐项相减,要求维度一致
*矩阵乘法矩阵内积规则,A的列= B的行
/右除A/BA * inv(B)
\左除A\Binv(A) * B
^矩阵幂A^nn 次矩阵乘法
>> A = [1 2; 3 4], B = [5 6; 7 8]A =1     23     4B =5     67     8>> A + Bans =6     810    12>> A - Bans =-4    -4-4    -4>> A * Bans =19    2243    50>> A / Bans =3.0000   -2.00002.0000   -1.0000>> A / B * Bans =1     23     4>> A \ Bans =-3    -44     5>> A * (A \ B)ans =5     67     8>> A ^ 2ans =7    1015    22

2. 点运算符(逐元素操作)

运算符含义
.*元素乘法
./元素右除
.\元素左除
.^元素幂
>> A = [1 2; 3 4], B = [5 6; 7 8]A =1     23     4B =5     67     8>> A .* Bans =5    1221    32>> A ./ Bans =0.2000    0.33330.4286    0.5000>> A .\ Bans =5.0000    3.00002.3333    2.0000>> A .^ 2ans =1     49    16

3. 常用数学函数

下述函数若作用于矩阵则是对每一元素进行的。

函数说明
sqrt(x)平方根
pow2(x)2的幂
log(x)自然对数
log2(x)2为底的对数
log10(x)10为底的对数
exp(x)e为底的指数
sign(x)符号函数
mod(x,y)余数,x为负数时是向负数的余数
rem(x,y)余数,x为负数时是向正数的余数
round(x)四舍五入
floor(x)向下取整
ceil(x)向上取整
fix(x)向 0 方向取整
conj(x)复数共轭
real(x)复数实部
imag(x)复数虚部
abs(x)
angle(x)相角
>> sqrt([4 9])ans =2     3>> pow2([1 2 3])ans =2     4     8>> log(exp(1))ans =1>> log2(8)ans =3>> log10(100)ans =2>> exp(1)ans =2.7183>> sign([-3 0 4])ans =-1     0     1>> mod(-7, 3)ans =2>> rem(-7, 3)ans =-1>> round(3.6)ans =4>> round(3.4)ans =3>> floor(3.6)ans =3>> ceil(3.2)ans =4>> fix(-3.7)ans =-3>> fix(3.7)ans =3>> conj(1+2i)ans =1.0000 - 2.0000i>> real(1+2i)ans =1>> imag(1+2i)ans =2>> abs(3+4i)ans =5>> angle(pi/4)ans =0

4. 矩阵变换函数

函数说明
transpose(A)A.'非共轭转置
fliplr(A)左右翻转
flipud(A)上下翻转
flipdim(A,1)将矩阵按第一个维度进行翻转
rot90(A)旋转90度
diag(A)对角矩阵
rref(A)最简行阶梯形矩阵
tril(A)下三角矩阵
triu(A)上三角矩阵
reshape(A,m,n)将矩阵A重新排成 m × n m\times n m×n的矩阵
>> A = [1 2; 3 4]A =1     23     4>> transpose(A)ans =1     32     4>> A.'ans =1     32     4>> fliplr(A)ans =2     14     3>> flipud(A)ans =3     41     2>> flipdim(A, 1)ans =3     41     2>> flipdim(A, 2)ans =2     14     3>> rot90(A)ans =2     41     3>> diag(A)ans =14>> rref(A)ans =1     00     1>> tril(A)ans =1     03     4>> triu(A)ans =1     20     4>> reshape(A, 1, 4)ans =1     3     2     4

5. 矩阵运算函数

函数含义
det(A)行列式
inv(A)逆矩阵
rank(A)矩阵秩
trace(A)对角线元素之和
norm(A)矩阵范数
cond(A)矩阵条件数
[V,D]=eig(A)矩阵的特征值分解,V表示特征向量,D表示特征值
[Q,R]=qr(A)矩阵的QR分解
[L,U]=lu(A)矩阵的LU分解
>> det([1 2; 3 4])ans =-2>> inv([1 2; 3 4])ans =-2.0000    1.00001.5000   -0.5000>> rank([1 2; 2 4])ans =1>> trace([1 2; 3 4])ans =5>> norm([3 4])ans =5>> cond([1 2; 3 4])ans =14.9330>> [V,D] = eig([1 2; 3 4])V =-0.8246   -0.41600.5658   -0.9094D =-0.3723         00    5.3723>> [Q,R] = qr([1 2; 3 4])Q =-0.3162   -0.9487-0.9487    0.3162R =-3.1623   -4.42720   -0.6325>> [L,U] = lu([1 2; 3 4])L =0.3333    1.00001.0000         0U =3.0000    4.00000    0.6667

6.向量内积/外积

函数主要作用
dot点积
cross叉积
>> dot([1 2 3], [4 5 6])ans =32>> cross([1 2 3], [4 5 6])ans =-3     6    -3

7.其他函数

函数主要作用向量行为矩阵行为(默认)
min/max极值单值每列最值
mean平均值单值每列均值
median中位数单值每列中位数
std标准差单值每列标准差
diff相邻差分长度减1每列差分
sort升序排序排序向量每列排序
sum求和总和每列求和
prod乘积累乘每列累乘
cumsum累加和向量累加每列累加
cumprod累乘积向量累乘每列累乘
length最大维长度向量长度二维矩阵为max(行,列)
size维度信息[1,n][m,n]
norm向量/矩阵范数L2 范数谱范数(最大奇异值)
>> A = reshape(1:16, 4, 4)A =1     5     9    132     6    10    143     7    11    154     8    12    16>> min(A)ans =1     5     9    13>> max(A)ans =4     8    12    16>> mean(A)ans =2.5000    6.5000   10.5000   14.5000>> median(A)ans =2.5000    6.5000   10.5000   14.5000>> std(A)ans =1.2910    1.2910    1.2910    1.2910>> diff(A)ans =1     1     1     11     1     1     11     1     1     1>> sort(A)ans =1     5     9    132     6    10    143     7    11    154     8    12    16>> sum(A)ans =10    26    42    58>> prod(A)ans =24        1680       11880       43680>> cumsum(A)ans =1     5     9    133    11    19    276    18    30    4210    26    42    58>> cumprod(A)ans =1           5           9          132          30          90         1826         210         990        273024        1680       11880       43680>> length(A)ans =4>> size(A)ans =4     4>> norm(A)ans =38.6227

字符串

创建字符串以及字符串数组

单引号将内容括起来表示一个字符串,以ASC2码存储。

% 创建字符串
a = 'ABC'
% 创建字符串数组,不可以使用单引号,否则输出会是字符串
>> a = ["hello" "word"]a = 1x2 string 数组"hello"    "word">> a = ['hello', 'word']a ='helloword'

字符函数

函数含义
abs('ABC')返回字符串中每个字符的 ASCII 码(与 double 等价)
double('ABC')返回字符串中每个字符的 ASCII 码
char([65 66 67])将 ASCII 数字转换为对应字符,结果为 'ABC'
int2str(123)将整数转换为字符串 '123'
num2str(3.14)将数值(整数或浮点数)转换为字符串 '3.14'
str2num('1.23 4.56')将字符串解析为数值向量 [1.23 4.56]
strcat('ab', 'cd')字符串拼接,结果为 'abcd',自动去除尾部空格
strvcat('abc', 'defg')垂直拼接字符矩阵,按最大长度补空格
strcmp('abc','abc')比较字符串是否完全相同,返回 1(true)或 0(false)
strncmp('abcdef','abcxyz',3)比较字符串前3个字符是否相同,返回逻辑值
strrep('cat','a','o')将字符串中的 'a' 替换为 'o',结果为 'cot'
strmatch('he', ['hello','hero','hi'])返回所有以 'he' 开头的字符串索引
eval()将字符串理解为代码执行
>> abs('A')ans =65>> double('A')ans =65>> char(65)ans ='A'>> int2str(123)ans ='123'>> num2str(3.14)ans ='3.14'>> str2num('1.23 4.56')ans =1.2300    4.5600>> strcat('ab', 'cd')ans ='abcd'>> strcat('ab', 'cd ')ans ='abcd'>> strvcat('abc', 'defg')ans =2x4 char 数组'abc ''defg'>> strcmp('abc', 'abc')ans =logical1>> strcmp('abc', 'ab')ans =logical0>> strncmp('abcdef', 'abcxyz', 3)ans =logical1>> strncmp('abcdef', 'abcxyz', 4)ans =logical0>> strrep('cat', 'a', 'o')ans ='cot'>> strmatch('he', 'hi')ans =[]>> strmatch('he', 'he')ans =1>> strmatch('he', ["he" "him"; "s" "hem"])ans =14>> strmatch('he', ["hello";"hero";"hi"])ans =12>> eval("a=2")a =2

相关文章:

  • Redis7底层数据结构解析
  • Redis:功能特性和应用场景
  • c++ typeid运算符
  • [Windows] Dism++_Mod系统清理优化利器v10.1.1002.1B绿色魔改版
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 文件事件处理部分)
  • 大数据运维过程中常见的一些操作
  • 【Dv3Admin】工具分页配置文件解析
  • TomatoSCI分析日记:数据分析为什么用csv不用excel
  • javaScirpt学习第五章(函数)-第二部分
  • AI学习笔记(一)背景学习
  • 编辑器之神 Vim
  • 前端面经 协商缓存和强缓存
  • OldRoll复古胶片相机:穿越时光,定格经典
  • 什么是特性阻抗
  • 表单校验代码和树形结构值传递错误解决
  • PCIE硬件管脚顺序问题解决方案
  • MySQL强化关键_018_MySQL 优化手段及性能分析工具
  • 高并发抽奖系统优化方案
  • 守护生命之光:进行性核上性麻痹的全方位健康护理指南
  • Vue事件处理
  • 做网站的可行性分析/网上宣传广告怎么做
  • 河池市都安县建设局网站/网站建设营销推广
  • 网站源码怎么获取/赣州seo外包
  • 关于旅行的网站怎样做/seo排名优化什么意思
  • 网站设计模板中的页/网上兼职外宣推广怎么做
  • 江西省宜春市建设局网站/百度seo在哪里