【问题标题】:fprintf issues in writing and then readingfprintf 先写后读问题
【发布时间】:2017-08-03 14:49:27
【问题描述】:

我正在尝试在 Matlab 中导出包含 Anys 网格 (*.node) 的节点坐标的二维矩阵。在这方面,我只是在 Matlab 中使用 fopen 和 fprintf 命令。例如:

=========================================

fid = fopen('c:\new_nodes.node', 'wt'); fprintf(fid,'%3d %10.4e %10.4e %19.4e\n',new_nodes'); % new_nodes : my 2D matrix

========================================

生成文件的内容是好的,但是我无法在 Ansys 中读取它,当我在 Notepad++ 中打开这个文件(例如,new_nodes.node)并执行“另存为”时,它变得可读了!!!如果您能帮助我找出 Matlab 代码的问题以及如何解决这个问题,那就太好了... 提前谢谢,

【问题讨论】:

  • 你得到什么错误?
  • 使用 \r 代替 \n 可能会有所帮助。
  • 无法加载有限元模型!
  • rahnema1,不幸的是,它没有用......
  • 尝试在fopen函数中只使用'w'而不是'wt'

标签: matlab printf notepad++ fopen


【解决方案1】:

可能是线路制动器出现错误。

w而不是wt打开文件

当您添加t 时,matlab 在您的\n 之后添加\r

[编辑@ 17:22]

fid = fopen('new_nodes.node', 'wt');
fprintf(fid,'%3d %10.4e %10.4e %19.4e\n',[pi 2.1 exp(1) 2.5]);
fclose(fid);
fid = fopen('new_nodes.node','r');
B = fread(fid,inf,'*uint8');
fclose(fid);

现在 B 包含 56 个值,总和为 2664。你得到了什么?

如果我使用 notepad++ 将其保存为 new_nodes2.node,我得到的 B 值完全相同。

【讨论】:

  • 好的。您不能逐字节比较这两个文件(工作与非工作)吗? fread(fid,inf,'*uint8')
  • Gelliant,谢谢你的帮助……其实我没有用过第三部分:fclose(fid);
  • 哈哈,好的,很高兴我能帮上忙。通常 Matlab 必须在另一个程序可以访问它之前释放该文件。
猜你喜欢
  • 2021-04-09
  • 1970-01-01
  • 2015-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多