找回密码
 注册
Simdroid-非首页
查看: 306|回复: 14

matlab计算结果如何保存,以供C语言读取?

[复制链接]
发表于 2009-10-14 00:17:35 | 显示全部楼层 |阅读模式 来自 清华大学
用matlab计算的结果为四列很长的矩阵,但是我用matlab保存在txt文本中时,却不能保持为我们书写的样子,没有清晰地行列
请问矩阵结果如何才能保存为我们实际书写的样子?
还有这个计算结果需要在C语言中调入,matlab保存为什么格式比较好?
如果还需将计算结果转换为二进制(有小数点),再在C语言中调入,matlab中又该如何保存?

谢谢各位了,最近一直在折腾这个问题?
发表于 2009-10-14 01:06:32 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
这没什么难点呀,matlab保存C语言中调入,和matlab保存Fortran语言中调入基本是一样的,不明白你“不能保持为我们书写的样子”是什么意思。

可以参考下面二贴,http://forum.simwe.com/thread-882163-1-1.html

http://forum.simwe.com/thread-898304-1-1.html,第5#

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-14 17:00:41 | 显示全部楼层 来自 广西贵港
你应该先补习补习C或者C++读取文件的知识
用matlab计算的结果为四列很长的矩阵,但是我用matlab保存在txt文本中时,却不能保持为我们书写的样子,没有清晰地行列
请问矩阵结果如何才能保存为我们实际书写的样子?
还有这个计算结果需要在C语言中调入,matl ...
xuw08 发表于 2009-10-14 00:17
回复 不支持

使用道具 举报

发表于 2009-10-14 19:04:55 | 显示全部楼层 来自 重庆
本帖最后由 风天小畜 于 2009-10-14 19:06 编辑

你的所谓的 没有保持原来的样子,是不是 指的  没有换行?

如果是那样的话,在二进制方式打开和文本方式打开,是有区别的。
也就是 ascii 码   \n ascii 13  和 \r  ascii 10  ,以文本方式和二进制方式打开,是有区别的。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-14 20:43:53 | 显示全部楼层 来自 新加坡
首先可以保证的是,在matlab中以任何方式创建的数据文件,都能在C语言程序或者其他支持文件读写的语言的程序中读取。

如果数据量大,而且都是数字的话,可以考虑在matlab中写成二进制文件。这样一来效率高,而且可以直接把数据读入相应的数组中。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-15 22:25:40 | 显示全部楼层 来自 黑龙江哈尔滨
补习一下文件输入输出的格式控制符的用法。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-19 11:30:45 | 显示全部楼层 来自 清华大学
这没什么难点呀,matlab保存C语言中调入,和matlab保存Fortran语言中调入基本是一样的,不明白你“不能保持为我们书写的样子”是什么意思。

可以参考下面二贴,http://forum.simwe.com/thread-882163-1-1.html

...
messenger 发表于 2009-10-14 01:06

谢谢你转的贴,正在好好看
之前我用记事本打开txt,中间有黑块,没有换行
现在用写字板打开就正常显示了
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-19 11:33:04 | 显示全部楼层 来自 清华大学
你应该先补习补习C或者C++读取文件的知识

shunfly 发表于 2009-10-14 17:00

谢谢大家的关注,C语言很久没用,都忘了
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-19 15:36:32 | 显示全部楼层 来自 清华大学
你的所谓的 没有保持原来的样子,是不是 指的  没有换行?

如果是那样的话,在二进制方式打开和文本方式打开,是有区别的。
也就是 ascii 码   \n ascii 13  和 \r  ascii 10  ,以文本方式和二进制方式打开,是 ...
风天小畜 发表于 2009-10-14 19:04


不过我现在还搞不清楚二进制文件与文本文件存取时的区别
有没有介绍matlab数据存储方面比较详细的书?
谢谢
回复 不支持

使用道具 举报

发表于 2009-10-19 16:16:46 | 显示全部楼层 来自 北京朝阳
可以参考taohe兄的书

  1. 深入浅出MATLAB 7.x混合编程
  2. 董维国  编著
  3. 目    录
  4. 作者自序
  5. 前言
  6. 第1章  概述  1
  7. 1.1  关于MATLAB的接口技术  1
  8. 1.2  MATLAB 7.x的新特点  5
  9. 第2章  MATLAB接口技术中的数据交流  7
  10. 2.1  数据交流概述  7
  11. 2.2  在MATLAB 7.0及更新版本中引进的新功能  7
  12. 2.2.1  在MATLAB 7.0中引进的有关数据导入、导出的新功能  7
  13. 2.2.2  在MATLAB 7.0.1中引进的有关数据导入、导出的新功能  8
  14. 2.2.3  在MATLAB 7.0.4中引进的有关数据导入、导出的新功能  8
  15. 2.3  文本文件  9
  16. 2.3.1  高级命令  9
  17. 2.3.2  低级命令  23
  18. 2.4  二进制文件  33
  19. 2.4.1  二进制文件的打开  34
  20. 2.4.2  二进制文件的读写  35
  21. 2.4.3  文件读写位置控制  40
  22. 2.4.4  二进制文件的关闭  41
  23. 2.5  MAT文件  42
  24. 2.5.1  在MATLAB中读写MAT文件  42
  25. 2.5.2  在普通的C++程序中读写MAT文件  43
  26. 2.6  以内存映射(Memory-mapping)的方式读写文件  64
  27. 2.6.1  功能概述  64
  28. 2.6.2  内存映射方法的使用  66
  29. 2.7  本章小结  69
  30. 第3章  MATLAB调用C/C++  71
  31. 3.1  MEX技术概述  71
  32. 3.2  工作环境的设置  72
  33. 3.2.1  系统要求  72
  34. 3.2.2  使用Visual C++  73
  35. 3.2.3  在Windows平台使用gcc  75
  36. 3.2.4  Linux上使用gcc编译MEX文件  77
  37. 3.3  MEX文件的编译以及mex命令的使用  78
  38. 3.3.1  mex命令的使用  78
  39. 3.3.2  Windows平台上mex配置文件的使用  80
  40. 3.3.3  UNIX上mex配置文件的使用  80
  41. 3.4  C-MEX详解  80
  42. 3.4.1  C-MEX文件的构造  80
  43. 3.4.2  内存分配和管理  82
  44. 3.4.3  C语言MEX文件使用范例  84
  45. 3.4.4  C++语言MEX文件  92
  46. 3.5  在MATLAB环境之外编译MEX文件  95
  47. 3.5.1  在Visual Studio .Net 2003集成开发环境中编译MEX  95
  48. 3.5.2  在Windows上用EditPlus编辑、编译MEX文件  97
  49. 3.5.3  在Windows和UNIX平台上使用Makefile编译MEX文件  99
  50. 3.6  关于MEX文件的调试  102
  51. 3.6.1  使用mexPrintf打印调试信息  102
  52. 3.6.2  使用调试工具  102
  53. 3.7  Windows平台系统函数的调用  107
  54. 3.7.1  把窗口最大化或者设成最前端  107
  55. 3.7.2  在MATLAB捕捉F1等功能健的动作  111
  56. 3.8  本章小结  116
  57. 第4章  MATLAB调用FORTRAN  118
  58. 4.1  工作环境的设置  118
  59. 4.1.1  系统要求  118
  60. 4.1.2  在Windows上配置DIGITAL Visual FORTRAN编译器  119
  61. 4.1.3  在Windows上配置g77  119
  62. 4.1.4  在Linux上配置g77  120
  63. 4.2  F-MEX详解  121
  64. 4.3  使用范例  124
  65. 4.4  调试FORTRAN语言MEX文件  133
  66. 4.4.1  编译调试版本MEX文件  133
  67. 4.4.2  在Windows平台调试  133
  68. 4.4.3  在UNIX平台调试  134
  69. 4.5  使用FORTRAN 90/95编写MEX文件  134
  70. 4.5.1  配置FORTRAN 90/95编译器  134
  71. 4.5.2  编写和编译FORTRAN 90/95语言的MEX文件  138
  72. 4.6  常见错误  142
  73. 4.7  本章小结  143
  74. 第5章  MATLAB调用一般动态连接库  144
  75. 5.1  概述  144
  76. 5.2  MATLAB R14提供的新功能  144
  77. 5.3  MATLAB的动态连接库函数接口  145
  78. 5.3.1  动态连接库文件的打开  145
  79. 5.3.2  数据准备  146
  80. 5.3.3  动态连接库文件中函数的调用  150
  81. 5.3.4  动态连接库文件的卸载  151
  82. 5.4  使用范例  151
  83. 5.4.1  在MATLAB中使用FORTRAN动态连接库  151
  84. 5.4.2  调用Windows API改变MATLAB的Figure窗口或GUI程序图标  153
  85. 5.4.3  在MATLAB中使用TotalCommander的WCX插件  156
  86. 5.5  本章小结  159
  87. 第6章  C/C++调用MATLAB计算引擎  161
  88. 6.1  概述  161
  89. 6.2  MATLAB计算引擎库函数的使用  162
  90. 6.3  在MATLAB环境编译引擎程序  164
  91. 6.3.1  在Windows平台编译引擎程序  164
  92. 6.3.2  在Windows平台使用MinGW gcc编译C/C++语言引擎程序  165
  93. 6.3.3  在UNIX/Linux平台编译引擎程序  166
  94. 6.4  运行引擎程序所需的系统配置  167
  95. 6.5  在MATLAB环境之外编译引擎程序  167
  96. 6.5.1  在Windows上用MinGW gcc编译MATLAB引擎程序  168
  97. 6.5.2  在Visual C++ 7.1中使用MATLAB引擎  170
  98. 6.5.3  与wxWidgets结合使用实例  173
  99. 6.6  本章小结  190
  100. 第7章  MATLAB编译器的使用  192
  101. 7.1  概述  192
  102. 7.2  MATLAB 7.x编译器新特点  193
  103. 7.2.1  MATLAB编译器4.x的新特点  193
  104. 7.2.2  C/C++代码的生成  194
  105. 7.2.3  MATLAB组件运行环境(MCR)  195
  106. 7.2.4  组件技术文件(CTF)  195
  107. 7.2.5  MATLAB编译器选项  195
  108. 7.3  MATLAB编译器的安装、设置和使用  197
  109. 7.3.1  安装  197
  110. 7.3.2  设置  197
  111. 7.3.3  MATLAB编译器的使用  198
  112. 7.3.4  编译后程序的发布  198
  113. 7.4  C/C++调用mcc产生的库函数  199
  114. 7.4.1  在MFC应用程序中使用mcc产生的库函数  199
  115. 7.4.2  在MFC应用程序中隐藏MATLAB的Figure窗口  202
  116. 7.4.3  在wxWidgets开发的跨平台应用程序中隐藏MATLAB的Figure
  117. 窗口  211
  118. 7.4.4  在Win32应用程序的窗口中嵌入MATLAB的Figure窗口  235
  119. 7.5  使用mcc创建独立可执行文件  243
  120. 7.5.1  编译Loadlibrary函数  243
  121. 7.5.2  使用%#external编译指示实现MATLAB和C/C++混合编程  251
  122. 7.5.3  去除经编译后MATLAB程序产生黑色窗口的方法  253
  123. 7.6  本章小结  259
  124. 第8章  MATLAB产生的COM组件的调用  260
  125. 8.1  概述  260
  126. 8.2  MATLAB 的COM编译器  261
  127. 8.2.1  MATLAB的COM编译器简介  261
  128. 8.2.2  运行MATLAB COM编译器的必要条件  261
  129. 8.2.3  MATLAB 7.0.4中COM编译器的新功能  262
  130. 8.3  MATLAB COM编译器的安装、配置及使用  262
  131. 8.3.1  安装及配置  262
  132. 8.3.2  使用MATLAB COM编译器创建COM组件  262
  133. 8.4  MATLAB COM组件  265
  134. 8.4.1  关于COM组件的一些概念  265
  135. 8.4.2  MATLAB COM编译器产生的COM组件  267
  136. 8.4.3  在C++中使用COM对象  268
  137. 8.5  在C++中使用MATLAB COM编译器产生的COM组件  270
  138. 8.5.1  在控制台程序中使用原接口  271
  139. 8.5.2  在控制台程序中使用智能指针  273
  140. 8.5.3  在C++程序中以后期绑定方式动态调用MATLAB COM组件  276
  141. 8.5.4  在MFC应用程序中使用MATLAB COM编译器产生的组件  278
  142. 8.5.5  在MFC应用程序中使用组件产生的事件  286
  143. 8.6  本章小结  298
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-24 14:43:51 | 显示全部楼层 来自 清华大学
10# rocwoods

非常感谢,好像这本书正好有我想要的
不知道有没有电子版的下载
回复 不支持

使用道具 举报

发表于 2009-10-24 15:01:29 | 显示全部楼层 来自 浙江杭州
买一本吧,taohe那么热心地经常为大家解答问题,也不好意思搞盗版呀。问过问题的都有这种体会,搞清楚了一个难题,比得几十元钱还高兴。


非常感谢,好像这本书正好有我想要的
不知道有没有电子版的下载
xuw08 发表于 2009-10-24 14:43
回复 不支持

使用道具 举报

发表于 2009-10-24 17:23:16 | 显示全部楼层 来自 湖北武汉
MATLAB也提供了底层的比较低级的文件操作,我也做过这方面的东西,我将一个矩阵保存成一个const的数组,格式可以写的和C语言完全一致,不要调用高级的操作就可以了,自己直接从底层函数写起,taohe老大都写书了啊,没想到还有这么牛的人,我作为一个看书的人只能膜拜一下。。。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-25 08:55:04 | 显示全部楼层 来自 新加坡
用matlab提供的低层函数比如fwrite/fread等等和C语言的是兼容的。另外,C语言文件读写函数可以用“字节”单元来读写文件,理论上说,可以读取任何格式的“文件”。

关于写书,大概是四年前的事情了,可能当时有点冲动。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2012-2-18 15:50:51 | 显示全部楼层 来自 广西河池
初学Matlab...
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-8 08:15 , Processed in 0.071835 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表