matlab基本命令-matlab的命令语句

2023-04-10 14:49:03

 

通用命令

clear :清除工作区中的变量;

clc:清除命令行窗口中的内容;

cd:显示或改变工作路径;

dir:显示当前工作路径下的文件;

help:显示帮助文档;

helpwin:在帮助窗口显示帮助文档;

who:显示当前变量;

>> help cos cos - 以弧度为单位的参数的余弦 此 MATLAB 函数 返回 X 的每个元素的余弦。cos 函数按元素处理数组。该函数同时接受实数和复数输入。 对于 X 的实数值,cos(X) 返回区间 [-1, 1] 内的实数值。 对于 X 的复数值,cos(X) 返回复数值。

whos:变量详细情况;

what:显示指定路径下的matlab文件;

which:显示函数或文件的位置信息;

>> which pinv D:\Program Files\Polyspace\R2019b\toolbox\matlab\matfun\pinv.m

type:显示指定的M文件;

lookfor:搜索关键词相关的函数,

>> lookfor pca ipcam - Creates ipcam object to acquire frames from your IP Camera. mapcaplot - creates a Principal Component plot of expression profile data. pca - Overload Principal Components Analysis for DataMatrix objects. zigbeeExportToPcap - Export MAC frames into PCAP (packet capture) file

永久变量

pi

>> pi ans = 3.14159265358979

eps

>> 1+eps #eps两个不同浮点数之间的最小距离,2^-52 % 计算 1+eps(比 1 大“一点儿”),并赋给 ans ans = 1

nan

NaN

inf

>> 1/0 ans = Inf

i或j

realmin

realmax

数据显示方式:format

>> a=[pi 2;0.1,38.3] >> format long >> a a = 3.141592653589793 2.000000000000000 0.100000000000000 38.299999999999997 >> format rational >> a a = 355/113 2 1/10 383/10

算术运算

format A = [1 2; 3 4] % A 为矩阵 B = [5 6; 7 8] % B 也是矩阵 C1 = A + B % 矩阵加 C2 = A * B % 矩阵乘 C3 = A/B % 矩阵除,相当于 A * B^(-1) C4 = A\B % 矩阵左除,相当于 A^(-1) * B C5 = 3 * A % 矩阵的数乘运算 D1 = A^2 % 矩阵的平方,相当于 A * A D2 = A^(-1) % 求 A 的逆矩阵 D3 = A^(-2) % 相当于 A 的逆矩阵的平方 D4 = B * D2 % 等价于 B/A

矩阵变换函数

A = [1 2 3 4; 5 6 7 8] A1 = fliplr(A) A2 = flipud(A) A2 = flipdim(A, 1) % 第 1 维为行,即上下翻转 A2 = flipdim(A, 2) % 第 2 维为列,即左右翻转 A3 = rot90(A) % 逆时针翻转 90 度

其他函数

a = [5 1 2 3 7]; x0 = min(a) size(a) % 求 a 的行数和列数 x1 = [max(a) mean(a) sum(a) prod(a) length(a) numel(a)] s1 = sort(a) % 从小到大排序,即升序排序 s2 = sort(a, descend) % 降序排序 y1 = [cumsum(a); cumprod(a)] y2 = diff(a) % 计算相邻元素的差 p = [1 2 3]; q = [4 5 6]; dot(p, q) % 计算向量 p 和 q 的内积 b = [1 2 1 3 5]; unique(b) % 返回由 b 中不同元素构成的向量

以上都是以向量为例的.事实上,这些函数也可以对矩阵进行运算.

需要说明的是,多数函数对矩阵进行运算就是对矩阵中每一个列向量进行运算.

如果需要对矩阵的行进行相关运算,可以先对矩阵进行转置再运算,也可以通过设置参数直接对行进行运算.

a = [1 2 3; 4 5 6]; b = [7 8 9; 3 2 1]; max(a) % 每个列向量里的最大值 max(a, [], 2) % 每个行向量里的最大值 sum(a) % 每个列向量的和 sum(a, 2) % 每个行向量的和 length(a) % 矩阵中行数和列数的最大值 c = size(a) % 矩阵的尺寸(行数和列数) dot(a, b) % 两个矩阵中对应的列向量做点积运算

逻辑运算

t = 1 : 10 % 生成 1 到 10 的整数向量,并赋给变量 t t >= 3 & t < 6 % 元素值在 [3, 6) 上时结果为 1,否则为 0 t < 3 | t >= 7 % 元素值小于 3 或大于等于 7 时结果为 1,否则为 0 ~(t < 3 | t >= 7) % 取反,等同于 t >= 3 & t < 7

一个数组对另一个数组索引

A =5:5:50 B=[1 3 6 7 10]; A =rand(5) B=A>0.5;%(超过0.5的设为0)

结果

B = 5×5 logical 数组 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1
A(B) =0 %逻辑数组

关系运算

A = [1 2; 2 3]; % A 为矩阵 B = [3 2; 1 2]; % B 也是矩阵 Z1 = A==B Z2 = A>=B Z3 = A<B

x=4x=4 时, 3<x<53<x<5 逻辑表达式

3<x<5

左到右3<x要么真,要么假,值1或0,剩下的表达式要么0<5,要么1<5,值都是真,改为3<x && x<5即可。

三角函数和双曲函数

sin(3) [sin(pi/2) sinh(3) asinh(2)] A = [1 3; 20 50]; sin(A) % 对矩阵的运算就是对其中的每一个元素做运算(与点运算类似) tan(A) % MATLAB 中的绝大多数函数都能对矩阵进行运算

指数函数和对数函数

Z = [exp(1) log(3) log2(8) sqrt(2) pow2(3)] exp([1.5 2.7])

归整函数和求余函数

Y1 = [ceil(pi) fix(pi) floor(2.718)] Y2 = [round(2.718) round(2.718,2) rem(5,3)]

矩阵运算

矩阵建立

直接输入

a1 = [1 2 3] % 等价于 a1 = [1, 2, 3]; a2 = [5; 6] b = [1+2 pi * 3 exp(1); sin(1), abs(-9) sqrt(3)] % 2×3 矩阵 c = [] % 生成空矩阵 size(c) % 空矩阵的行数和列数都是 0

MATLAB 允许用户根据已知的子矩阵构造新的矩阵:

c1 = [a1; b] % 构造新矩阵,a1 为第一行,b 为第二行 c2 = [b a2] % 构造新矩阵,b 为第一列,a2 为第二列

矩阵编辑器

% “工作区(Workspace)”窗口右键单击,在弹出的新窗口中单击 “新建” 创建一个 % 新变量,其默认名称为“unnamed”,用户可以手动修改该名称; % 也可以在 “命令行窗口” 直接输入 “x1 = 0” 以创建一个新变量. % 然后,在工作区内双击新建的变量,则会弹出该变量的编辑窗口(类似于 Excel 表格)

由函数自动生成

(1) 用冒号(:)操作符生成向量,其一般形式为 “初值 : 增量 : 终值”.如:

a = 0:1:5 % 用一般形式创建向量 b = 10:15 % 增量是 1 时可以省略 c = 2:0.01:3; % 增量也可以是小数 d = 10:-2.5:0 % 增量还可以是负数

(2) 用 linspace 命令生成向量.调用方式:linspace(起始值, 终止值, 元素数目).如果不写第三个参数,则默认生成 100 个元素.如:

y = linspace(10, 20, 5)

(3) 特殊矩阵的生成:零矩阵、幺矩阵、单位阵、魔方阵等:

b1 = ones(2, 3) % 生成 2 行 3 列的全 1 矩阵 b2 = ones(3) % 生成 3 阶全 1 方阵 c1 = zeros(2, 3) % 生成 2 行 3 列的全 0 矩阵 d1 = eye(3) % 生成 3 阶单位矩阵 f = magic(3) % 生成 3 阶魔方阵 r1 = rand(2, 3) % 生成在 [0, 1] 上服从均匀分布的伪随机数矩阵 r2 = randn(1, 5) % 生成服从标准正态分布的 5 维伪随机数行向量 r3 = rand(1, 3) * 2-1 % 生成 3 个 [-1, 1] 上的均匀分布伪随机数向量 r4 = repmat(r1, 3, 2) % 用 r1 生成重复矩阵(3 行 2 列)

4. 外部文件导入

用户可以把外部 Excel 文件(*.xls、*.xlsx)或纯文本文件(*.txt)里数据导入到 MATLAB 工作区里.

单击 “主页” 选项卡,然后单击 “导入数据” 打开窗口选择要导入的数据文件

矩阵修改

1. 单个元素

a = [1, 2, 3, 4, 5]; % 定义行向量 a(3) % 查看第 3 个元素的值 a(3) = 10 % 修改第 3 个元素的值 b = [1; 2; 3]; % 定义列向量 b(3) = sum(b) % 修改第 3 个元素的值 c = [1 2 3; 4 5 6; 7 8 9] % 定义矩阵 c(2, 3) = 10 % 修改第 2 行,第 3 列元素的值 c(6) = 20 % 修改第 6 个元素的值

2. 多个元素

a = [1 2 3 4 5; 3 6 9 7 1; 2 5 8 9 0] % 创建矩阵 a([1 2], [1 3 5]) = ones(2, 3) % 修改指定行和列交叉位置的元素 a([1 3], 2:4) = 10 % 2:4 表示第 2 到 4 列 a(3, 3:end) = 20 % end 表示最后一列 a(:, [1:3]) = 30 % 第一个冒号表示从 1 到 end a([5:10]) = 40 % 把矩阵看成列向量,修改第 5 到第 10 个元素

3. 特殊元素的引用与修改

a = [1 2 3 4 5; 3 6 9 7 1; 2 5 8 9 0] % 创建矩阵 find(a>7) % 返回 a 中大于 7 的元素下标 find(a>10) % 返回 a 中大于 10 的元素下标,结果为空向量 a(find(a>7)) = -10 % 将 a 中大于 7 的元素改为 -10 a(a>=6) = -5 % 直接将 a 中大于等于 6 的元素改为 -5 a(a>2 & a<5) = -15 % 直接将 a 中大于 2 且小于 5 的元素改为 -15

4. 删除矩阵的某行或某列

a = [1 2 3 4 5; 3 6 9 7 1; 2 5 8 9 0]; % 创建矩阵 a(:, 3:4) = [ ] % 删除第 3 列和第 4 列 a(2, :) = [ ] % 删除第 2 行

5. 矩阵形状的修改

a = [1 2 3; 3 6 9] % 创建 2 行 3 列矩阵 a a(:) % a 的列向量结构 a(5) == a(1, 3) % 因此第 5 个元素就是第 1 行、3 列元素 b = reshape(a, 3, 2) % 把 a 的列向量结构重组成 3 行 2 列矩阵 isequal(a, b) % a 和 b 是两个不相等的矩阵 isequal(a(:), b(:)) % 但是,a 和 b 的列向量结构是一样的

矩阵运算

1. 算术运算

矩阵的算术运算是指矩阵之间的加、减、乘、除、左除和幂运算.

2. 转置运算

A = [1 2; 3 4] transpose(A) % 对 A 进行转置 B = A % 用转置运算符 实现转置运算

3. 矩阵的行列式和秩

A = [1 2; 3 4]; det(A) % 求方阵 A 的行列式 rank(A) % 求矩阵 A 的秩

4. 逆运算

A = [1 2; 3 4]; inv(A) % 求 A 的逆矩阵

线性方程组为 Ax = b 的解为 x = inv(A)*b

A = [1 2; 3 4]; b = [1; -1]; x = inv(A) * b; % 也可以写成左除形式 x = A\b

5. 矩阵的特征值和特征向量

B = [1 3 5; 8 6 4; 9 3 6]; D = eig(B) % 返回矩阵 B 的特征值构成的向量 [V, D] = eig(B) % 返回矩阵 B 的特征向量 V 和特征值 D B * V - V * D

6. 矩阵的大小及元素个数

B = [1 3 5; 8 6 4]; [m, n] = size(B) % 返回矩阵的行数 m 和列数 n L1 = length(B) % length 只能返回矩阵行数和列数的最大者 L2 = length(B(:)) % 把矩阵看成列向量,然后返回矩阵的元素个数 L3 = numel(B) % 也可以用 numel 函数直接返回矩阵的元素个数

点阵运算

A = [1 2 3; 3 4 5]; % A 为矩阵 B = [5 6 7; 7 8 9]; % B 也是矩阵 F1 = A .* B % 矩阵的点乘运算,即 A 和 B 中的对应元素直接相乘 F2 = A .^ 2 % 矩阵的点次幂运算,即 A 中的每一个元素直接平方 F3 = 2 .^ A % 矩阵的点次幂运算,即 2 的 A 次幂 F4 = A ./ B % 矩阵的点除运算,即 A 和 B 中的对应元素直接相除 F5 = A .\ B % 矩阵的点左除运算,即 A 和 B 中的对应元素直接做左除运算

MATLAB 中的大多数函数也都是按阵列运算来求解的,即:阵列函数.

A = [1 2 3; 3 4 5]; % A 为矩阵 C = [5 6 7 8 9]; % C 为向量 cos(A) % 求矩阵 A 中每一个元素的余弦值,结果还是矩阵 log(C) % 求向量 C 中每一个元素的自然对数,结果还是向量

矩阵关系运算

1. 关系运算和逻辑运算

a = [1 2 3 4 5; 3 6 9 7 1; 2 5 8 9 0] % 创建矩阵 a > 5 & a <= 7 find(a>5) % 返回 a 中大于 5 的元素下标

2. 相关函数

[any([1 0]), any([0 0]), all([1 2]), all([1 0])] any([0 1 1 0; 1 1 0 0]) % 判断矩阵中每个列向量是否不全为 0 all([0 1 1 0; 1 1 0 0]) % 判断矩阵中每个列向量是否全为 1 xor([1 0; 0 4], [1 1; 3 3]) % 判断两个矩阵中对应元素是否不同 isnan([0/0, 1]) isequal([1 2; 3 4], [1 2; 3 4]) % 与运算符 "==" 不同,请大家自己验证 ismember([1 2; 3 4], [1 2 1; 4 5 6]) ischar([a 1; b 2]) % 是否为字符串型矩阵 isletter([a 1; b 2]) % 字符串中是字母的地方为 1,否则为 0 isspace([a 1; b 2]) % 字符串中是空格的地方为 1,否则为 0 isstudent % 是否为学生版 MATLAB

向量运算

1. 点积

C1 = [6 7 8 9]; % C1 为向量 C2 = [1 3 5 7]; % C2 为向量 dot(C1, C2) % 求 C1 和 C2 的点积 sum(C1 .* C2) % 也可以用阵列运算和 sum 函数来计算向量的点积 C1 * C2

说明:用 dot 命令计算点积时,两个向量只要维数相等就行,而不用考虑行向量或列向量;

但用后两种方法,需要考虑两个向量的结构特点.

如果一个是行向量、一个是列向量,即使维数相等,用后两种方式也无法得到正确结果.

2. 叉积

A = [6 7 8]; % A 为三维向量 B = [1 3 5]; % B 为三维向量 C1 = cross(A, B) % 用 cross 命令求 A 和 B 的叉积 C2 = cross(B, A) % 求 B 和 A 的叉积

3. 混合积

A = [6 7 8]; B = [1 3 5]; C = [2 5 7]; dot(A, cross(C, B))

数据保存与加载

保存为二进制文件

1. 保存为 MATLAB 文件(.mat)

X = [1, 2; 3, 4] Y = [5, 6, 7; 8, 9, 0]

1.1 把矩阵 X 和 Y 存到 E:\mydata1.mat 和 E:\mydata2.mat下

save E:\mydata1 X Y save(E:\mydata2, X, Y)

注意:如果指定的文件已经存在,MATLAB 不会提示任何警告信息而是直接覆盖原文件

1.2 用 who 和 whos 命令查看 .mat 数据文件中的变量:

who(-file, E:\mydata1) % 或采用命令方式:who -file E:\mydata1 whos(-file, E:\mydata1) % 或采用命令方式:whos -file E:\mydata1

1.3 向已经存在的文件中追加数据

Z = [1 2]; save(E:\mydata2, Z, -append) % 向文件 mydata2.mat 中追加数据 Z whos(-file, E:\mydata2) % 查看文件 mydata2.mat 中的变量

2. 加载 .mat 文件

clear X Y

2.1 加载 MATLAB 文件(.mat)

load E:\mydata1 Y % 用命令方式只加载变量 Y load(E:\mydata2, X) % 用函数方式只加载变量 X

2.2 用 matfile 函数创建文件对象,并从文件对象中直接读取或修改文件中的数据

mfobj = matfile(E:\mydata02) % 创建文件对象,并与文件 E:\mydata02.mat 建立关联 X = mfobj.X; % 把 mfobj.X 赋给变量 X 后就可以直接使用 X 了 mfobj.Properties.Writable = true; % 将文件的可写属性改为 true mfobj.Z = 3; % 可以直接更改文件中变量的内容 mfobj.Z

检验 2.2 所进行的操作

clear mfobj Z % 清空文件对象 mfobj 和变量 Z load E:\mydata02 Z % 重新从文件 mydata02 中加载 Z Z % Z 的值已经被改变

保存为纯文本

在 MATLAB R2019a 及以后版本中才可以使用 writematrix 和 readmatrix 函数

1. 保存数据

X = [1 2 3; 4 5 6]; Y = [10 20; 60 80]; Z = [100 200 300];

1.1 保存为纯文本文件

writematrix(X) % 保存到当前目录下,文件名为 X.txt,用逗号作为分隔符 type X.txt % 显示文件内容 writematrix(Y, mydata03.txt, Delimiter, tab) % 用制表符作为分隔符 type mydata03.txt

更多的分隔符请查阅帮助系统

1.2 保存到 Excel 文件的第一个工作表中

writematrix(X, mydata04.xlsx)

1.2 保存到 Excel 文件的指定工作表中的指定区域

writematrix(Y, mydata04.xlsx, Sheet, 2, Range, A2:B3) writematrix(Z, mydata04.xlsx, Sheet, price)

说明:向指定工作表存入数据时,新数据会覆盖原数据;

如果不指定工作表,MATLAB 会在 Excel 文件中新建一个工作表,并存入数据.

2. 读取数据、

2.1 读取纯文本文件

R1 = readmatrix(X.txt) % 读取文件 X.txt 里的数据 R2 = readmatrix(mydata03.txt) % 读取文件 mydata03.txt 里的数据

2.2 读取文件 mydata03.xlsx 的第 1 个工作表中的所有数据

S1 = readmatrix(mydata04.xlsx)

2.3 读取文件 mydata03.xlsx 的第 2 个工作表的 A2:B2 区域中的数据

S2 = readmatrix(mydata04.xlsx, Sheet, 2, Range, A2:B2)

2.4 读取文件 mydata03.xlsx 的名称为 price 的工作表中的所有数据

S3 = readmatrix(mydata04.xlsx, Sheet, price)

说明:在读取 Excel 文件时,必须确保文件及文件中的工作表都是存在的,

否则 MATLAB 会报错.

3. 用 xlsfinfo 命令用于返回文件的详细信息

[stat, shs, fmt] = xlsfinfo(mydata04.xlsx) % 读取文件信息 S3 = readmatrix(mydata04.xlsx, Sheet, shs{3}) % 读取第 3 个工作表中的数据

4. 判断文件是否存在

A = exist(FileName) exist(mydata04.xlsx) % 文件存在,返回 2 exist(mydata05.csv) % 文件不存在,返回 0

说明:exist 函数不仅可以用来检验文件是否存在,

还可以检验指定的文件夹、工作区中的变量、以及 MATLAB 的系统函数等内容

是否存在.如果它们不存在,exist 返回 0,否则返回非 0,详细信息请查阅帮助系统.

5. 文件的删除

delete E:\mydata1.mat % 文件必须存在才能删除成功。不提示、直接删,回收站也不保留

索引

a=[0,-1,0,10,0,9,-5,0,0]; a(a<0) =10 %将小于0的设为10 a1 =[0,1,2,3,4 ,5,6]; a1(rem(a,2) ==0)=[] % 删除其中的偶数
A =magic(4); B = isprime(A); A(~B)=0 %非素数设为0

A =

0 2 3 13

5 11 0 0

0 7 0 0

0 0 0 0
A = [2 5 7 3;8 0 9 42;1 3 4 2]; ix =find(A>5) ;% 索引位置 A(ix)=A(ix)+3; A(11) %结果? %ans = 45
A =[1 4 3 2]; B =[5 4 1 3]; A>B x =find(A==B) %找元素相等时下标 A(A == B) %访问A,B中对应元素相等的元素
a = [1 2 3;4 5 6]; [m,n] =find(a == 3) % 找全下标 nl =find(a=3) %找单下标

参考文献:

大学数学实验,张建波,人民邮电出版社,2020年8月


以上就是关于《matlab基本命令-matlab的命令语句》的全部内容,本文网址:https://www.7ca.cn/baike/15323.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明