Matlab常用函数集合(各类文件读取/保存、数据转换、处理)——持续更新中

相比其他编程语言,matlab可以更加方便实现自己想法,并且具备很多安装好的库,函数,无需配置环境和安装库,由于经常使用matlab和其他编程语言如python,c++,有时候格式很容易搞混,从而总是要谷歌搜索,干脆把常用一些功能和数据读取格式记录下来,方便查用。

一、各类文件读取、显示、保存

0、文件/文件夹

0.1、判断文件是否存在

exist()函数

1、图像文件

1.1、图片读取

(1)imread()函数

img = imread('myimage.jpg');
imshow(img);
1.2、图片显示

(1)imshow()函数

imshow(img);
1.3、图片保存

(1)imwrite()函数

imwrite(img,'myimage.png');

2、音频文件

2.1 音频文件读取

(1)audioread()函数

[x,fx] = audioread('myaudio.wav'); 
%x:音频数据
%fs:音频采样率
2.2 音频文件播放

(1)audioplayer()对象

player = audioplayer(myaudio,Fs); 
	% 创建音频播放对象
	% myaudio:音频数据
	% Fs:音频的采样频率
%%---------播放------------
play(player);
%%---------暂停------------
pause(player);
%%---------继续------------
resume(player);
%%---------停止------------
stop(player);

(2)sound函数

sound(myaudio,Fs);
2.3 音频文件保存

(1)audiowrite()

audiowrite(filename,myaudio,Fs);
% filename:文件名,如 'audioname.wav'
% myaudio:音频文件数据
% Fs:音频采样频率

3、文本文件

3.1 txt文件读写

(1)fopen()函数

% 打开文件 tsunamis.txt 并获取文件标识符
fileID = fopen('tsunamis.txt');
% 将 fileID 传递给 fgetl 函数以从文件读取一行
tline = fgetl(fileID)
% 关闭文件
fclose(fileID)

(2)fprintf()函数
将数据写入文本文件

fileID = fopen('1.txt','w');
fprintf(fileID,'abc');
fclose(fileID);

(3)importdata函数
可直接将结构统一的数据读取为矩阵形式

A = importdata(filename)
3.2 表格文件

(1)readtable()函数
  此函数读取文件数据并将其保存在包含每列变量的表中。如果 CSV 文件的每一列都不包含变量,readtable() 函数将为它们提供一个从 var1 开始的默认变量名,依此类推

% readtable 基于文件的扩展名确定文件格式:
%  .txt、.dat 或 .csv(带分隔符的文本文件)
%  .xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx 或 .ods(电子表格文件)
%  .xml(可扩展标记语言 (XML) 文件)
%  .docx(Microsoft® Word 文档文件)
%  .html、.xhtml 或 .htm(超文本标记语言 (HTML) 文件)
T = readtable(filename);

(2)readmatrix()函数
  从文件中读取列向数据来创建数组,需要注意的是,该函数是2019a才加入的,早于该版本的旧版里没有这个函数,需要改用其他函数

% readmatrix 基于文件的扩展名确定文件格式:
%  .txt、.dat 或 .csv(适用于带分隔符的文本文件)
%  .xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx 或 .ods(适用于电子表格文件)
A = readmatrix(filename);

(3)readcell()函数
  从文件中读取元胞数组

% readcell 基于文件的扩展名确定文件格式:
%  .txt、.dat 或 .csv(适用于带分隔符的文本文件)
%  .xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx 或 .ods(适用于电子表格文件)
C = readcell(filename);

4、数据输出显示

4.1 直接输出

直接键入变量名称,不使用“;”即可在命令行直接显示变量数值

4.1 disp()函数

disp(X) 函数显示变量 X 的值,而不打印变量名称;

4.1 fprintf()函数

fprintf()函数将数据按指定格式写入到文本文件中
简单用法:

%fprintf(fid, format, variables);
%按指定的格式将变量的值输出到屏幕或指定文件;
%fid为文件句柄,指定要写入数据的文件,若缺省,则输出到屏幕;
%format是用来控制所写数据格式的格式符, format用来指定数据输出时采用的格式:
	%d 整数
	%e 实数:科学计算法形式
	%f 实数:小数形式
	%g 由系统自动选取上述两种格式之一
	%s 输出字符串
%variables是用来存放数据的矩阵;

fprintf("abcdef\n");
a=[1,2,3];
fprintf('%d\n',i);

二、画图

1、二维曲线绘制

1.1 图形绘制:plot()、loglog()、函数

(1)plot()函数
直接绘制曲线

plot(Y); % 横坐标直接为数据数量,纵坐标为Y的值
plot(X,Y); % 横坐标为X,纵坐标为Y
plot(X1,Y1,Xn,Yn); % 同时绘制多条曲线
plot(X,Y,'--'); % 指定线性、标记和颜色,如这里为‘--’,即设置为虚线

(2)loglog()函数
用于双坐标轴进行对数运算,以对数方式显示

x = logspace(-1,2);
y = 2.^x;
loglog(x,y)
1.2 分块创建坐标区:subplot()

subplot()

subplot(m,n,p) % 将当前图窗划分为m×n网格,并在p指定的位置创建坐标区

%% ----------创建不同大小子图------------
subplot(2,2,[3,4]); % 如本例中将第三、四子图合并为更大一个子图

%% ---------自定义位置子图-----------
pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')

pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')

%% -----------修改坐标区属性------------
ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);  
plot(ax2,Z)
1.3 添加标签:title()、xlabel()、ylabel()

title()xlabel()ylabel()

title(titletext); % 添加图像标题
xlabel(txt); % 添加横坐标标签
ylabel(txt); % 添加纵坐标标签
1.4 设置坐标轴范围:axis()

axis()

axis([0 1 -1 1]) % 表示横坐标显示范围为:0~1,纵坐标显示范围为:-1~1
axis([0 1 -inf inf]) % inf:使用自动计算的值作为 y 轴的最大范围
axis off % 绘制曲面而不显示坐标区的线条和背景
axis tight % 将坐标轴范围设置为等于数据范围,这样绘图可以扩展到坐标区边缘
axis ij % 更改坐标系的方向,将y轴从大到小
1.5 添加绘图:hold on、hold off

hold on、hold off
添加新绘图时保留当前绘图

x = linspace(-pi,pi);
y1 = sin(x);
plot(x,y1)

hold on
y2 = cos(x);
plot(x,y2)
hold off
1.6 添加图例:legend()

legend()

legend  % 为每个绘制的数据序列创建一个带有描述性标签的图例
legend(label1,label2) % 以字符向量或字符串列表形式指定标签
legend({'Jan','Feb','Mar'}) % 使用字符向量元胞数组、字符串数组或字符矩阵设置标签
legend('off') % 删除图例
1.7 添加图例:指定线型、颜色

参考matlab官网
RGB颜色对照表

plot(t,data,'color','red'); % 几种常见颜色单词
plot(t,data,'color','r'); % 几种常见颜色单词首字母缩写
plot(t,data,'color',[0.5 0.5 0.5]); % 0-1范围使用颜色RGB值更加精准、丰富
plot(t,data,'color',‘#80B3FF’); % 使用16进制颜色代码,R2019a之后

线形、标记、线宽(matlab官方教程

plot([0 1 2 3],'--'); %线型
plot([0 1 2 3],'--o'); %标记
plot([1 2 3 4 5 6],[0 3 1 6 4 10],'--or'); %指定颜色、线型和标记的组合
p = plot([1 2 3 4 5 6],[0 3 1 6 4 10],'-o','LineWidth',3); %修改线宽、标记填充和标记轮廓

2、散点绘制

1.1 图形绘制:scatter()函数

scatter()

3、图文本中的希腊字母和特殊字符

图文本中的希腊字母和特殊字符

三、文件夹、文件批量操作

1、读取文件夹内所有文件

(1)列出文件夹内容:dir函数

dir  %列出当前文件夹内文件和文件夹,注意第一、二项为'.'和‘..dir name  % 列出与 name 匹配的文件和文件夹
listing = dir(name) % 返回 name 的属性
listing = dir([path,'*.wav']); % 注意path路径用单引号‘’,不要用双引号“”。
								%使用通配符*获取指定类型文件,不会有'.''..'两项

(2)读取文件/文件夹名

name = listing(n).name  % n代表第几个,读取其他信息类似

2、新建文件夹

mkdir()函数

mkdir('D://new_dir');

四、对数据、字符串处理

1、字符串:串联、格式化、转换

1.1 串联

strcat()函数

s = strcat(s1,...,sN) 
% 水平串联其输入参数中的文本。每个输入参数都可以是字符数组、字符向量元胞数组或字符串数组

[ ]直接相连
需要注意的点:相连接的变量需要为char类型

s = [s1,s2]; %直接使用'[]'将字符串串联
1.2 格式化输出

很多时候我们需要将数据以文本形式按某种格式输出,如保留某小数点以十进制输出。此时需要用到matlab格式化文本输出
在这里插入图片描述
在输出字符串表达式中,用%标识,常用形式需要指出最后‘转换类型’,‘转换精度’,‘字段宽度’

转换类型:
c	单个字符。
d	十进制记数法(有符号)。
e	指数记数法(使用小写 e,如 3.1415e+00 中一样)。
E	指数记数法(使用大写 E,如 3.1415E+00 中一样)。
f	定点记数法。
g	更紧凑的 %e 或 %f。(将不输出无意义的零。)
G	与 %g 相同,但使用大写 E。
o	八进制记数法(无符号)。
s	字符向量或字符串数组。
u	十进制记数法(无符号)。
x	十六进制记数法(无符号,使用小写字母 a–f)。
X	十六进制记数法(无符号,使用大写字母 A–F)。

例子
A = pi*ones(1,3);
txt = sprintf('Displaying pi: \n %f \n %.2f \n %12f', A)
txt = 
    'Displaying pi: 
      3.141593 
      3.14 
          3.141593'
1.3 字符串比较

strcmp函数

tf = strcmp(s1,s2) 比较 s1 和 s2,如果二者相同,则返回 1 (true),否则返回 0 (false)
1.4 cell/数字与字符串互转

转成字符串或者字符:string或者char函数
转成数字:str2num函数

a = string(b);
c = char(a);
a = '123.34';
b = str2num(a);
c = string(b);

四、对图像进行处理

1、图像裁剪

imcrop()函数

Icropped = imcrop(I,rect) % 根据在裁剪矩形 rect 中指定的位置和维度裁剪图像 I。
%裁剪的图像包括输入图像中该矩形完全或部分包围的所有像素。

%输出图像的实际大小并不始终与 rect 指定的宽度和高度完全一致。例如,假设 rect 是 [20 20 40 30](使用默认的空间坐标系)。
%指定矩形的左上角是空间 (x,y) 坐标为 (20,20) 的像素的中心。矩形的右下角是空间 (x,y) 坐标为 (60,50) 的像素的中心。生成的输出图像大小为 31×41 像素,而不是 30×40 像素。
  • 18
    点赞
  • 157
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值