我是靠谱客的博主 超级野狼,这篇文章主要介绍Matlab常用操作及函数整理1、常用语法汇总2、变量的操作3、数据的读取与保存4、显示与输出5、数字与矩阵的操作6、元胞数组7、matlab运行与调试的操作8、函数操作9、文件夹操作、路径操作10、字符串操作函数11、结构体的操作12、类13、图像处理,现在分享给大家,希望可以做个参考。

文章目录

  • 1、常用语法汇总
    • 1.1 switch、case、otherwise
  • 2、变量的操作
    • 2.1 清除内存中的变量
    • 2.2 工作区变量显示
    • 2.3 查看变量数据类型
  • 3、数据的读取与保存
    • 3.1 工作区变量保存与读取
    • 3.2 从文件中读取数据
    • 3.3 保存数据至文件中
      • 3.3.1 save(最简单基本的)
      • 3.3.2 dlmwrite
      • 3.3.3 fopen+fprintf
  • 4、显示与输出
    • 4.1 fprintf
    • 4.2 disp
  • 5、数字与矩阵的操作
    • 5.1 取模
    • 5.2 正态分布随机数
    • 5.3 取整
    • 5.4 矩阵合并、拼接
    • 5.5 判断矩阵是否为空
    • 5.6 终止代码块或指示最大数组索引
    • 5.7 均值、方差、标准差
    • 5.8 数组的一些常用函数操作
      • 数组元素的乘积
      • 数组元素的数目
      • 确定任何数组元素是否为非零
      • 确定所有的数组元素是为非零还是true
      • 两个数组的差集
      • 串联数组
      • 水平串联数组
      • 垂直串联数组
      • 矩阵随机置换
    • 5.9 在Matlab中创建数组
      • 等差数列
      • 创建全零数组
      • 均匀分布的随机数或随机矩阵
      • 逻辑假数组
  • 6、元胞数组
    • 6.1 元胞数组的创建和初始化
    • 6.2 访问
    • 6.3 元胞数组的相关函数
    • 6.4 cell单元的删除
    • 6.5 将结构体转换为元胞数组
  • 7、matlab运行与调试的操作
    • 7.1 暂时停止
    • 7.2 条件为 false 时引发错误
    • 7.3 时间
      • 启动秒表计时器
      • 从秒表读取已用时间
      • 已用的 CPU 时间
      • 日期向量之间流逝的时间
    • 7.4 不显示warning信息
    • 7.5 MATLAB 路径设置(手动添加路径和程序添加路径)
    • 7.6 gpu与内存
      • 执行排队的运算后,将 tall 数组收集到内存中
      • 创建文件的内存映射
    • 7.7 matlab并行计算
  • 8、函数操作
    • 8.1 句柄
    • 8.2 输入输出参数等函数
      • 可变长度输入参数列表
      • 函数输入参数数目
      • 函数输出参数数目
  • 9、文件夹操作、路径操作
    • 9.1 列出文件夹内容
    • 9.2 从各个部分构建完整文件名
    • 9.3 当前正在运行的代码的文件名
  • 10、字符串操作函数
  • 11、结构体的操作
    • 11.1 结构体的字段名称,或者 Java 或 Microsoft COM 对象的公共字段
    • 11.2 确定输入是否为结构体数组字段
  • 12、类
    • 类定义关键字
  • 13、图像处理
    • 13.1 RGB to YCbCr
    • 13.2 将 RGB 图像或颜色图转换为灰度图
    • 13.3 Convert image to 8-bit unsigned integers
    • 13.4 将图像转换为双精度值
    • 13.5 Convert image to single precision

1、常用语法汇总

1.1 switch、case、otherwise

执行多组语句中的一组

2、变量的操作

2.1 清除内存中的变量

clearvars

2.2 工作区变量显示

列出工作区中的变量名称

who

列出工作区中的变量及大小和类型

whos

2.3 查看变量数据类型

确定输入是否具有指定数据类型

isa

返回对象属性

复制代码
1
2
class(var)

3、数据的读取与保存

3.1 工作区变量保存与读取

save

load

3.2 从文件中读取数据

fscanf读取

复制代码
1
2
3
4
5
6
7
fid=fopen('b.txt','r'); %得到文件号 [f,count]=fscanf(fid,'%f %f %f %f',[3,4]); %把文件号1的数据读到f中。其中f是[3 4]的矩阵 %这里'%f %f %f %f'表示读取数据的形势,他是按原始数据型读出 fclose(fid);

或者用load读取

复制代码
1
2
f=load('b.txt');

3.3 保存数据至文件中

3.3.1 save(最简单基本的)

具体的命令是

复制代码
1
2
save *.txt -ascii x

x为变量名字(存在工作区中)
*.txt为文件名,该文件存储于当前工作目录下,再打开就可以打开后,数据有可能是以指数形式保存的。也可以是文件路径加上文件名。不管是直接文件名还是文件路径名都可以以字符串的形式进行输入。在命令行或者脚本中均可以使用。

3.3.2 dlmwrite

复制代码
1
2
3
dlmwrite('a.txt',a,'precision','%10.0f') dlmwrite('a.txt',a,'delimiter', 't')

对于只有一行或者一列的数据,很适用,但是多行的,就乱了

3.3.3 fopen+fprintf

fopen

fprintf

情况一:

复制代码
1
2
3
4
5
a = [1 2 3 4;5 6 7 8;9 10 11 12]; fid = fopen('b.txt','wt'); fprintf(fid,'%gn',a); fclose(fid);

然后用写字板打开b.txt,内容如下:为列向量

情况二:

对上面的命令做一下改动:# n 换行改为t,table键

复制代码
1
2
3
4
5
a = [1 2 3 4;5 6 7 8;9 10 11 12]; fid = fopen('b.txt','wt'); fprintf(fid,'%gt',a); fclose(fid);

然后用写字板打开b.txt,内容如下:为行向量:

情况三:
综合上面的两个结果,我们编写以下命令:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
a = [1 2 3 4;5 6 7 8;9 10 11 12]; fid=fopen('b.txt','wt');%写入文件路径 [m,n]=size(a); for i=1:1:m for j=1:1:n if j==n fprintf(fid,'%gn',a(i,j)); else fprintf(fid,'%gt',a(i,j)); end end end fclose(fid);

然后用写字板打开b.txt,内容如下:

说明:以上操作都是在当前的工作目录下完成!如果需要dat格式,直接把txt换为dat就可以

4、显示与输出

4.1 fprintf

这个和C语言的基本一样,区别在于格式化字符串用的是单引号。而且,这个函数也直接支持矩阵打印,也即,上例的a可以是单个数字,也可以是矩阵。

复制代码
1
2
3
4
a = [1 2 3 4;5 6 7 8;9 10 11 12]; fprintf('%d', a); fprintf('%dn', a);

4.2 disp

复制代码
1
2
3
a = [1 2 3 4;5 6 7 8;9 10 11 12]; disp(a);

该函数的缺点是,打印完之后,会换行两次

有时候,我们不想让他换行2次,怎么办呢?方法很简单,把disp输出的换行符删掉就行了,查询ASCII表可知,删除符号的ASCII码是0x08,代码如下:

复制代码
1
2
3
4
5
6
a = [1 2 3 4;5 6 7 8;9 10 11 12]; fprintf('startn'); disp(a);%显示A矩阵 fprintf('%c', 8);%删掉一个换行符 fprintf('endn');

效果如下:

MATLAB 显示输出数据的三种方式

5、数字与矩阵的操作

5.1 取模

mod

5.2 正态分布随机数

randn

5.3 取整

floor 向下取整

ceil向上取整

fix向零取整

round 四舍五入取整

5.4 矩阵合并、拼接

复制代码
1
2
3
4
5
a = [1,2,3;4,5,6] b = [7,8,9;10,11,12] [a b] [a;b]

元胞数组的操作

5.5 判断矩阵是否为空

isempty()

5.6 终止代码块或指示最大数组索引

end

5.7 均值、方差、标准差

mean均值

median中位数

var方差(分母为n-1)

std标准差(分母为n-1)

std2对矩阵元素

为什么样本方差(sample variance)的分母是 n-1?

corrcoef相关系数

cov协方差

5.8 数组的一些常用函数操作

数组元素的乘积

prod

数组元素的数目

numel

确定任何数组元素是否为非零

any

确定所有的数组元素是为非零还是true

all

两个数组的差集

setdiff

串联数组

cat

水平串联数组

horzcat

垂直串联数组

vertcat

矩阵随机置换

randperm

5.9 在Matlab中创建数组

等差数列

复制代码
1
2
3
Array_a=0:5 Array_b=linspace(0,5,6)

创建全零数组

zeros

均匀分布的随机数或随机矩阵

rand

逻辑假数组

false

6、元胞数组

cell数组一般被叫做元胞数组,它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等,类似于学过的c语言里的结构体

6.1 元胞数组的创建和初始化

可以直接通过{}类似于矩阵的直接赋值:a={‘winter’,123,‘coming’,‘哈哈’};

也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={‘winter’,123,‘coming’,‘哈哈’};

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a = {} % a = % 空的 0×0 cell 数组 a = {[1,2,3],'string'} % a = % 1×2 cell 数组 % {1×3 double} {'string'} a{1} = [1,2,3]; a{2} = 5; % a = % 1×2 cell 数组 % {1×3 double} {[5]} a=cell(1,4); % a = % 1×4 cell 数组 % {0×0 double} {0×0 double} {0×0 double} {0×0 double}

6.2 访问

与普通矩阵,数组的主要区别在于:通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容,举例如下图所示,其他操作基本一样。

6.3 元胞数组的相关函数

复制代码
1
2
3
4
5
6
7
8
cell:创建空的元胞数组,预分配内存 celldisp:显示元胞数组所有内容 cellplot:利用图形方式显示内容 cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵) mat2cell:将普通矩阵转化成元胞数组 iscell:判断输入是否为元胞数组 cellfun:为cell数组的每个cell单元的内容执行指定的函数,fun可以是特殊的函数或者句柄

A = cellfun(func,C) 将函数 func 应用于元胞数组 C 的每个元胞的内容,每次应用于一个元胞。然后 cellfun 将 func 的输出串联成输出数组 A,因此,对于 C 的第 i 个元素来说,A(i) = func(C{i})。输入参数 func 是一个函数的函数句柄,此函数接受一个输入参数并返回一个标量。func 的输出可以是任何数据类型,只要该类型的对象可以串联即可。数组 A 和元胞数组 C 具有相同的大小。(官网解释)

默认情况下,cellfun 将 func 的输出串联成数组。func 必须返回标量。如果 func 返回对象,则对象所属的类必须满足以下要求。
支持通过对象数组的线性索引进行赋值
具有一个 reshape 方法,可返回与输入大小相同的数组

如果 ‘UniformOutput’ 名称-值对组参数的值为 false (0),则 cellfun 将以元胞数组形式返回输出。在这种情况下,func 的输出可以具有任意大小和不同的数据类型。

6.4 cell单元的删除

我们知道矩阵及矩阵的删除可以通过[]实现:

元胞数组操作类似但和其赋值一样有区别,区别就在于{}和()

复制代码
1
2
3
4
5
a={1,2,3}; a{1}=[];%并不能删除第一个cell单元,只是变成空值 a(1)=[];%删除第一个单元 a(:)=[];%一次性删除所有cell单元

6.5 将结构体转换为元胞数组

struct2cell

7、matlab运行与调试的操作

7.1 暂时停止

pause

7.2 条件为 false 时引发错误

assert

7.3 时间

启动秒表计时器

tic

从秒表读取已用时间

toc

已用的 CPU 时间

cputime

日期向量之间流逝的时间

etime

7.4 不显示warning信息

复制代码
1
2
warning('off');

7.5 MATLAB 路径设置(手动添加路径和程序添加路径)

MATLAB 路径设置

7.6 gpu与内存

执行排队的运算后,将 tall 数组收集到内存中

gather

创建文件的内存映射

memmapfile

7.7 matlab并行计算

gcp

Matlab并行运算

关于matlab并行处理

matlab中的并行方法

【高性能】Matlab的并行计算之parfor

matlab 高性能并行计算之 spmd

MATALB中SPMD单程序多任务进行任务并行

matlab 高性能并行计算之 spmd

matlab 高性能并行计算之 spmd

matlab并行编程SPMD

8、函数操作

8.1 句柄

根据字符向量构造函数句柄

str2func

关于函数句柄的信息

functions

基于函数句柄构造字符向量

func2str

8.2 输入输出参数等函数

可变长度输入参数列表

varargin

函数输入参数数目

nargin

函数输出参数数目

nargout

9、文件夹操作、路径操作

9.1 列出文件夹内容

dir

9.2 从各个部分构建完整文件名

fullfile

9.3 当前正在运行的代码的文件名

mfilename

10、字符串操作函数

eval可以用来执行用字符串表示的表达式

deblank可以去掉字符串末尾的所有空格

findstr可以用来在长字符串中查找一个短的字符串,并返回相应的位置

isstr可以用来判断变量是否为字符串

isletter可以用来判断字符串中各个元素是否为字母

isspace可以用来判断字符串元素是否为空格符

lower和upper可以把字符串中的字母转为小写格式和大写格式

strcat可以把多个字符串在水平方向上依次连接起来

strvcat可以把多个字符串按竖直方向连接起来

strcmp可以用来进行字符串的比较,返回1或0

strcmpi可以用来忽略英文字母的大小写方式比较字符串

strncmp可以用来比较字符串前N个字符是否相同

strjust可以用来调整字符串矩阵的对齐方式

strmatch可以用来寻找和目标字符串匹配的行

strrep可以实现字符串的查找和替代功能

strtok可以找出字符串第一个空格符前的字符串

texlabel可以把字符串转换成tex软件的格式

不同进制间的转换,bin2hex,bin2dec(‘字符串’);dec2hex(数)=字符串;即十进制数不为字符串, 其它进制为字符串

函数bitget可以用来获取二进制的数位 C=bitget(A,bit),A为一个无符号整形数据

函数bitset可以用来设定某个二进制数位的值 C=bitset(A,bit) 指定数位的数值取反C=bitset(A,bit,V)指定数位的数值被V替换

函数bitand,bitor和bitxor可以用来进行‘与’,‘或’,‘抑或’数位操作

11、结构体的操作

11.1 结构体的字段名称,或者 Java 或 Microsoft COM 对象的公共字段

fieldnames

11.2 确定输入是否为结构体数组字段

isfield

12、类

类定义关键字

classdef

类的属性

13、图像处理

13.1 RGB to YCbCr

rgb2ycbcr

13.2 将 RGB 图像或颜色图转换为灰度图

rgb2gray

mat2gray

13.3 Convert image to 8-bit unsigned integers

im2uint8

13.4 将图像转换为双精度值

im2double

13.5 Convert image to single precision

im2single

最后

以上就是超级野狼最近收集整理的关于Matlab常用操作及函数整理1、常用语法汇总2、变量的操作3、数据的读取与保存4、显示与输出5、数字与矩阵的操作6、元胞数组7、matlab运行与调试的操作8、函数操作9、文件夹操作、路径操作10、字符串操作函数11、结构体的操作12、类13、图像处理的全部内容,更多相关Matlab常用操作及函数整理1、常用语法汇总2、变量内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部