如何用matlab读16bit的大小端存储模式的数据,数据存储在bin文件中

查看: 5427|回复: 5|关注: 0
如何将matlab计算出的数据以矩阵形式存储到txt文件中
如题,初学matlab,查了帮助,看得不是很懂。希望txt文档中的数据显式形式,是以矩阵显示的。这样可以方便查看数据。
请高手帮忙解答。谢谢!!
关注者: 8
底层I/O函数就可以实现!
你指的是在matlab中用矩阵形式读取txt文件吗?
load XX.(XX是TXT文档名称)
这样就在左边的workplace里面就出现以矩阵形式显示的mat文件
回复 2# hackersun 的帖子
谢谢你的帮助,能再详细一点吗?
比如说我用matlab算出 A = [1 2 3;
& && && && && && && && && && && && && && && && & 4 5 6 ]
fid=fopen('F:\A.txt','w');
fprintf(fid,'%d',P1_A);
存到txt文件里,结果是 1 2 3 4 5 6
我想让它在txt中也以矩阵的形式显示。请问有什么办法?
回复 3# chenlu1986 的帖子
抱歉,我帖子里面可能没讲明白。
谢谢,我的问题是存储。
把一个矩阵存到txt文件里。
回复 4# godspeedcat 的帖子
fid=fopen('F:\A.txt','w');
fprintf(fid,'%d',P1_A);&&这里是A 不是P1_A
不好意思,没改过来
站长推荐 /1
Powered bymatlab和verilog文件的读写_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
matlab和verilog文件的读写
上传于||文档简介
&&m​a​t​l​a​b​和​v​e​r​i​l​o​g​文​件​的​读​写
大小:295.51KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢matlab文件操作及读txt文件_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
matlab文件操作及读txt文件
上传于||文档简介
&&关​于​m​a​t​l​a​b​文​件​操​作​及​读​写​的​函​数​调​用
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
你可能喜欢如何用matlab处理excel文件中的数据_百度知道
如何用matlab处理excel文件中的数据
matlab读取excel文件可用xlsread函数,向excel中写数据可用xlswrite函数。注意:matlab不识别中文,读写的文件中最好不含有中文。 举例说明如下:1、matlab读取excel文件数据:bb = xlsread('c:\feature.xls', 'A0:A40');其中:c:\feature.xls为文件存放的地址;A0:A40为将要读取的单元格的范围;bb为读取的矩阵在MATLAB中的变量名。2、matlab向excel文件写数据:a1={'number'};b1={'scoreA'};c1={'scoerB'};A=rand(100,3).*100;xlswrite('a.xls',a1,'Sheet1','A1');
% a.xls是文件名,Sheet1是xls中第一个页面,A1为写入位置,下同xlswrite('a.xls',b1,'Sheet1','B1');xlswrite('a.xls',c1,'Sheet1','C1');xlswrite('a.xls',A,'Sheet1','A2:C101');
其他类似问题
为您推荐:
提问者采纳
xlsx&#39.xlsx那么可以用下面的语句把整个表单的数据读成一个矩阵A filename = 'Example假设你的excel文件名为E;A = xlsread(filename)
其他1条回答
在Matlab命令行窗口使用help使用帮助命令
help xlsread
xlsread Read Microsoft Excel spreadsheet file.
[NUM,TXT,RAW]=xlsread(FILE) reads data from the first worksheet in
the Microsoft Excel spreadsheet file named FILE and returns the numeric
data in array NUM. Optionally, returns the text fields in cell array
TXT, and the unprocessed data (numbers and text) in cell array RAW.
[NUM,TXT,RAW]=xlsread(FILE,SHEET) reads the specified worksheet.
[NUM,TXT,RAW]=xlsread(FILE,SHEET,'','basic') reads from the
spreadsheet in BASIC mode, the default on systems without Excel
The following syntaxes are ...
excel的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁13737人阅读
&&&&&&&今天起开始总结下MATLAB的文件操作函数。MATLAB的确用起来很方便,前提是你了解它的函数~
&&&&&&MATLAB的帮助文档看的那叫一个似懂非懂啊,特此总结。对我而言, fread的主要调用形式是这样的:
data = fread(fid, N, 'str')
&&&&&& fid不用说,自然是文件句柄(如fid=fopen('abc.txt' ,'r')),N是读入的元素个数,'str'是格式。在以前不会用的时候,格式都是直接省略的,这个时候函数就一个字节一个字节地从文件中读入数据,再在MATLAB中转化为double形式。
&&&&& 如果文件时二进制文件,这样读当然没问题,如果想要读入的是文本,那就不行了。文本也是一个字节一个字节地读,但是最后应该转化为char型:
&& frewind(f);
&& a=fread(f,1,'char=&char')
&& frewind(f);
&& a=fread(f,1,'uchar=&uchar')
66&& class(a)ans =uint8&& frewind(f);
&& a=fread(f,1,'uint8=&char')
&& frewind(f);
&& a=fread(f,1,'uchar=&char')
B&& frewind(f);
&& a=fread(f,1,'int8=&char')
&&&&& &上面是一个BMP文件的例子,读入的是文件第第一个字节,BMP文件以“BM”开头,第一个自己自然是B。int8、uint8、char、uchar是几种一个字节的数据类型。在例子中,a=&b表示以a的类型读入,再转化为b类型。a的作用是控制每次读入的字节数,然后转化为相应的类型,形成一定的数值,b的作用是在a的基础上进行转化。这里都是一个字节,读入以后,最后如果是char型,就都变成了字母B,如果是uchar型,就变成uint8。
&&& 以上是字节数相同的例子,a=&b,a似乎没多大用,但是,当字节数不同时,就大有用场了:
&& frewind(f);
&& a=fread(f,1,'uint16=&uint8')
% 在这里,uint16是两个字节的,所以一次性读入2个字节,先以uint16的形式读入,整数的排列规则是很简单的,假设低字节为a,高字节为b,那就等于b*256+a,得到的数肯定超过256,最后又要转化为uint8,因此只能截断了,uint8一个字节,最大能表示的数就是255,因此返回255.&&& frewind(f);
&& a=fread(f,1,'uint16=&float')
19778% 这里,说明以uint16读入的数,得到为19778,然后再转为单精度的float型,还是19778,当然,类型已经换掉了
&& frewind(f);
&& a=fread(f,1,'*uint32')
% *uint32相当于uint32=&uint32,以4个字节的形式读入,成为一个整数。
&& frewind(f);
&& a=fread(f,1,'uint32=&float')
% 以四个字节的形式读入,先变成整型,再变成float型,末尾的2丢掉了,是精度问题?&& class(a)
single&&& frewind(f);
&& a=fread(f,1,'uint32=&double')
% 转化为double,精度就够了&& frewind(f);
&& a=fread(f,1,'float=&double')
1.% 最精彩的来了,尽管float和uint32都是4个字节,但是这里得到的数却不与上面相等。前面说了,a=&b,系统以a的格式,读入相应的字节数,转化为a类型的一个数值,再将a转为b类型,这里读入的时候,以float的规则来读,再将float转为double,无非是提高精度而已。
&& frewind(f);
&& a=fread(f,1,'float=&uint32')
0% 读到的是1.,转化为整数,当然是0了
&&&&& 此外,我还尝试过以下格式:
&& a=fread(f,1,'3*int8=&char')
N*a=&b的形式,一般用在有skip(跳过)的地方,这里没有在后面的参数中指定跳过,所以默认的跳过为零,得到的结果还是字母B。跳过形式往往用在按bit读的时候,
&& a=fread(f,3,'*uint8')
&& frewind(f);
&& a=fread(f,4,'1*int8=&int8',1)
% 注意,前面读入的时候按int8读,所以跳过的时候,跳的是1个int8的长度,因此跳过了77,结果为66,,62&& frewind(f);
&& a=fread(f,2,'1*bit8=&int8',8)
62% 前面是bit8,凡是bitN的类型的,后面跳过时都指的是跳过几个bit&& frewind(f);
&& a=fread(f,2,'1*bit16=&int8',8)a =& 127
&&& 2%前面读入是按两个字节读(bit16),因此第一次读进来的是66和77,后来要转为int型,int表示的范围-128~127,因此就变成127了。然后跳过了62,下一个数字是2,在下一个数字是0,因此加在一起就是0了。&
另外,最全的调用形式是
[data, n] = fread(fid, N, 'a=&b', nn, 'l/n/b/...')
最后一个参数的作用是指定大端小端,windows这种用intel的是小端,低地址放低字节,所以读进66和77,66在低地址,他是低字节,77是高地址,是高字节,结果为66+77*256,UINX之类的一般是大端。网络通信一般是大端
'b'&& :大端
'l'&&& :小端
'n'&& :原来是大端现在就是大端,原来小端现在就是小端!
返回的n是指实际读进了几个单元。把n和N一比较,相等就说明确实读进了所需要的N个数据。
测试用的文件:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:192926次
积分:3877
积分:3877
排名:第4767名
原创:194篇
转载:47篇
评论:22条
(2)(6)(3)(2)(2)(1)(1)(6)(5)(1)(1)(9)(13)(3)(2)(29)(37)(27)(3)(6)(22)(16)(1)(1)(9)(4)(2)(8)(7)(1)(6)(2)(5)}

我要回帖

更多关于 matlab 大小端 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信