• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab与modelsim中的文件操作函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
matlab中 fscanf和fpintf是一对,用fprintf写的必须用fscanf来读。
fread和fwrite是一对,用fwrite写的必须用fread来读。
同样的数据,使用fprintf和fwrite写下去的是不一样的,但是使用其相应的读命令读上来的数据会是一样的。
 
文件格式:文本文件(ASCII文件)和二进制文件。我们平时能够用记事本看的文件就是文本文件。‘
文本文件使用fscanf格式读取。二进制文件用fread读取。
用文本格式写的话可以用十进制 十六进制等读取,但是我觉得本质就是读出字符,然后把 \n或者空格等格式符去掉,之后留下所要的数据。
那么照这个思路来想的话,其实任何文本格式的文件都可以用格式%c读出,只不过每次需要指定读的长度并且跳过那些格式符不读。
例如,我需要读以文本形式保存的ieee标准的double型数据,应该怎么办呢?
先贴一部分数据

4035cfac20000000 3fb31bdce0000000
4025f2a1e0000000 4033678ca0000000
40421bdd80000000 40432d7380000000
402811a080000000 3ffc620c40000000
4047ceb740000000 403a863280000000
40200abec0000000 4032233d60000000
402bc2e900000000 403d0901c0000000
4040058aa0000000 4017c70340000000
3ff908aaa0000000 40380aad80000000
401ed216c0000000 40472a3e00000000
40349c87a0000000 40343133e0000000

这是标准形式的ieee double格式的存储形式,第一行有两个数据,分别为21.811220 ,0.074644。

那我要读取这部分数据怎么办呢?前提是以文本形式保存的数据,以二进制形式保存的直接用fread读就行了。

首先先打开文件fid1=fopen(\'data_out.txt\',\'r\');

然后先读第一行的第一个数,16位。h=fscanf(fid1,\'%c\',16);

读完之后转化m=hex2num(h);

之后有空格,那就跳过去 fseek(fid1,1,\'cof\');

再读一个数l=fscanf(fid1,\'%c\',16);

读完再转化n=hex2num(l);

之后有个换行符是2位,跳过去fseek(fid1,2,\'cof\');

ok第一行读完,现在文件指针在第二行的第一个字节,以后继续照这样读就行了。

 
modelsim 中fprintf无效,而fwrite是以文本形式读写.
fwrite和fdisplay的区别在于fdisplay会在每次写结束后加\n换行但是fwrite则不会自动加,要想换行需要手动加\n.
modelsim 中一般使用readmemh和readmemb读取数据文件存到memory里边。数据要用空白或换行符隔开。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab M文件和面向对象编程发布时间:2022-07-18
下一篇:
Matlab符号计算,M文件汇总发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap