老铁们,大家好,相信还有很多朋友对于idl(或matlab)中如何打开dat文件和matlab不建议使用textread的相关问题不太懂,没关系,今天就由我来为大家分享分享idl(或matlab)中如何打开dat文件以及matlab不建议使用textread的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
idl(或matlab)中如何打开dat文件
对于小文件的dat文件我使用的是ultraedit打开的。如果使用MATLAB就比较简单。只需要一个代码就可以。我以自己的dat文件为例。dat在ultraedit打开如图所示。
对应的MATLAB代码如图所示。图中t为文件绝对路径;
文件读完之后要关闭掉文件句柄。
读出来的结果如图所示(图中的第一行)。
可以将内容读入到一个矩阵。矩阵的格式可以自己来定义。具体矩阵的格式可以参照如下fread函数语法,如图所示。
当然,在读取之前要注意dat里面的存储格式,数据的位宽可能为8bits,16bits,24bits等等。一定要搞明白。另外你的数据是有符号的还是无符号的,一定搞清楚。否则读出来的数据都是错的。
关于dat文件一些科普知识
1.数据显示格式为十六进制格式。
2.dat文件存储格式低位在左,高位在右。如图所示。
3.dat文件长度与所存数据的个数不一致。
4.dat文件打开方式采用rb+而不是r+。文件打开,读写方式如图。
5.如果需要在c语言下写dat文件操作,我也有现成的代码,欢迎一起讨论。
用matlab语句编写一个程序,要求:输入一个字符串后显示一个数字
你是不是想对16进制数据进行二进制转换啊,我这里有这个程序,可以试试这个
%%%%%%16进制转10进制转化方法一%%%%%%%%%%%%
a=textread('c:\a.txt','%s')';%以字符形式打开文件
alpha=hex2dec(a)';%16进制转化为10进制数,存入alpha矩阵
%%%%%%%16进制转10进制转化方法二%%%%%%%%%%%
[wenjian_ming,lujing_ming]=uigetfile('c:\a.txt','导入数据');
fid=fopen(strcat(lujing_ming,wenjian_ming),'r');
data=[];
while~feof(fid)
m=fscanf(fid,'%3x',[1inf]);
data=[data;m];%将读出的数据存入data矩阵中
end
alpha=data;
%%%%%%%保存文件方法一%%%%%%%%%%%%%%
dlmwrite('c:\b.txt',alpha,'delimiter','')%将得出数据存入新的b.txt文档
%%%%%%%保存文件方法二%%%%%%%%%%%%%%
fid=fopen('c:\d.txt','w');
fprintf(fid,'%d',alpha');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha2=alpha(1:2:length(alpha)-mod(length(alpha)+1,2));%将奇数元素提取出来
dlmwrite('c:\c.txt',alpha2,'delimiter','')%将得出数据存入新的c.txt文档
%%%%%%%画图%%%%%%%%%%%%%%
plot(1:length(alpha2),alpha2)%画图
OK,关于idl(或matlab)中如何打开dat文件和matlab不建议使用textread的内容到此结束了,希望对大家有所帮助。