matlab常用函数之数据读取&程序运行时间(1)

1、matlab程序运行时间:

测试代码运行时间,几种方法:

(1)tic、toc,使用格式如下:(推荐使用)

tic

……

toc

(2) clock + etime,使用格式如下:

t1=clock;

……

t2=clock;

t=etime(t2,t1)

(3) cputime 最原始的办法是通过cpu主频计算,使用格式如下:

t1=cputime;

……

t2=cputime;

t=t2-t1

(4) profile (推荐使用)

profile on : 开启profile
profile clear: 清空历史数据
profile off: 关闭profile
profile viewer: 查看profile 结果

 四种统计程序运行时间的代码如下:

clear;close all;clc;
format long;
% 方法1:tic toc
tic
num=0;
for i=1:100000
    num=num+1;
end
toc;
disp(['方法1 tic、toc时间 = ',num2str(toc)]);

%方法2: clock
t1=clock;
num=0;
for i=1:100000
    num=num+1;
end 
t2=clock;
t=etime(t2,t1);
disp(['方法2 etime(t2,t1) = ',num2str(t)]);

%方法3:cputime
t1=cputime;
num=0;
for i=1:100000
    num=num+1;
end 
t2=cputime;
t=t2-t1;
disp(['方法3 cputime = ',num2str(t)]);

%方法4:profile
profile on
% profile clear
num=0;
for i=1:100000
    num=num+1;
end 
profile viewer

2、matlab数据读取:

要分析的数据为:temp_data.txt;其中包含10行数据;如下:

(1)fgetl(fid)

函数功能:从文件中读取一行数据,并去掉行末的换行符
语法格式:tline = fgetl(fid)
fid是通过fopen函数打开文件后得到的一个整型的文件标识。fgetl从这个文件中读取一行数据并丢弃其中的换行符。如果读取成功,tline容纳了读取到的文本字符串,如果遇到文件末尾的结束标志(EOF),则函数返回-1,即tline值为-1
返回的字符串tline并不包含文本行的行终止符。要得到行终止符,可以使用函数fgets

  • 如果文件非空,则 fgetl字符向量形式返回 tline

  • 如果文件为空且仅包含文件末尾标记,则 fgetl 以数值 -1 的形式返回 tline

使用代码:

filename='temp_data.txt'
i=0; 
fid=fopen(filename);
while 1
    i=i+1;
    tline = fgetl(fid);
    if tline==-1, break, end
    nav_data(i,:)=str2num(tline);
end
fclose(fid);

查看nav_data,如下:

(2)fgets() 从文件中读取行,保留换行符 (换行符和回车符)

调用形式,如下:

tline = fgets(fileID) 读取指定文件中的下一行内容,并包含换行符。

tline = fgets(fileID,nchar) 返回下一行中的最多 nchar 个字符。

举例:fgets(_,10)  只输出10个字符;

因为fgetl()内嵌了fgets()函数,且下文分析了两者的区别!

两者的区别:

  • fgetl:内嵌了fgets函数(如下所示);但是删除了行末的换行符
function tline = fgetl(fid)
narginchk(1,1)

[tline,lt] = fgets(fid);
tline = tline(1:end-length(lt));
if isempty(tline)
    tline = '';
end

end
  • 因为fgetl不包括换行符、fgets包括换行符、回车符;因此,两个函数返回的字符长度是不一样的;

示例:

结果:

示例参考:

fgetl

fgets

回车、换行的十六进制为ox0D、ox0A

转义字符

意义

ASCII码值(十进制)

ASCII码值(十六进制)

\a

响铃(BEL)

007

0x07

\b

退格(BS) ,将当前位置移到前一列

008

0x08

\f

换页(FF),将当前位置移到下页开头

012

0x0C

\n

换行(LF) ,将当前位置移到下一行开头

010

0x0A

\r

回车(CR) ,将当前位置移到本行开头

013

0x0D

\t

水平制表(HT) (跳到下一个TAB位置)

009

0x09

\v

垂直制表(VT)

011

0x0B

\\

代表一个反斜线字符''\'

092

0x5C

\'

代表一个单引号(撇号)字符

039

0x27

\"

代表一个双引号字符

034

0x22

\?代表一个问号0630x3F

\0

空字符(NULL)

000

0x00

\ddd

1到3位八进制数所代表的任意字符

三位八进制

\xhh

1到2位十六进制所代表的任意字符

二位十六进制

0010 0000

040

32

0x20

(space)

空格

回车、换行的区别:

不同操作系统下换行符不同,如下:

\n:  UNIX

\n\r: window

\r:  MAC OS

参考:关于“回车”的有趣历史 及 “回车”与“换行”的区别

(3)fread 读取二进制文件中的数据

A = fread(fileID) 将打开的二进制文件中的数据读取到列向量 A 中,并将文件指针定位在文件结尾标记处。该二进制文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。读取文件后,请调用 fclose(fileID) 来关闭文件。

A = fread(fileID,sizeA) 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fread 按列顺序填充 A

A = fread(fileID,sizeA,precision) 根据 precision 描述的格式和大小解释文件中的值。sizeA 参数为可选参数。

A = fread(fileID,sizeA,precision,skip) 在读取文件中的每个值之后将跳过 skip 指定的字节或位数。sizeA 参数为可选参数。

A = fread(fileID,sizeA,precision,skip,machinefmt) 另外指定在文件中读取字节或位时的顺序。sizeAskip 参数是可选的。

[A,count] = fread(___) 还将返回 fread 读取到 A 中的字符数。您可以将此语法与前面语法中的任何输入参数结合使用。

参考链接:fread

matlab中fgetl、fgets、fread函数

 

(4)importdata()

importdata(‘文件名’, ‘分隔符’, ‘n’);

将数据存入“结构体”,其中,n表示n行表头;也可以用来读入图片

代码如下:

filename = 'Calibration.txt';
delimiterIn = ' ';
headerlinesIn = 2;
% newData = importdata('Static_Data200422114432.txt','\t', 2);
[newData,delimiterOut] = importdata(filename);

结果:

其中Calibration.txt中数据如下:

 

 

参考:

Matlab中计算代码运行时间的四种方法

Matlab之fgetl函数

通过低级 I/O 导入二进制数据

支持的导入和导出文件格式

使用导入工具读取文本文件数据

matlab中读取txt数据文件(txt文本文档)

importdata

【Matlab基础】06. 数据的导入导出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值