【问题标题】:Matlab Writing a matrix to text file issueMatlab将矩阵写入文本文件问题
【发布时间】:2015-02-16 18:46:35
【问题描述】:

我正在尝试将其“列标题”(其中 5 个)下的 25x5 列矩阵正确显示到文本文件中。

fprintf(fileID,'%8s %16s %24s %32s %40s\n', 'ID', 'Column 1', 'Column 2',...
'Column 3', 'Column 4');
fprintf(fileID,'%8.1f %16.1f %24.1f %32.1f %40.1f\n', uData);

在文本文件中,它显示像这样跨行的列之一(例如 ID 列):

ID    Column 1    Column 2   Column 3    Column 4
1            2           3          4           5 

它应该做的是沿着“ID”列向下,因为1、2、3、4和5都属于一列,我在文本文件中将其指定为“ID”:

ID    Column 1    Column 2   Column 3    Column 4
1          ...          ...       ...         ...
2          ...          ...       ...         ...
3          ...          ...       ...         ...
4          ...          ...       ...         ...

注意 ... 在这里表示那里有数据(矩阵中的其他值)。

那么我该如何修复它以使矩阵正确显示?

【问题讨论】:

  • 什么是uData?有什么例子吗?

标签: matlab file text matrix


【解决方案1】:

这是因为当您在 MATLAB 中使用 fprintf 写入数据时,数据是以 column-major 格式写入的。这意味着您的矩阵的值被打印到文件中,这样您的矩阵的每一行实际上都写在 columns 中,这就是您所注意到的。请注意,1, 2, 3, 4... 的值首先沿列写入,您希望值沿行写入。

要以行为主(即您想要的)写入此内容,您需要在写入之前转置您的数据。因此,请执行以下操作:

fprintf(fileID,'%8s %16s %24s %32s %40s\n', 'ID', 'Column 1', 'Column 2',...
'Column 3', 'Column 4');
fprintf(fileID,'%8.1f %16.1f %24.1f %32.1f %40.1f\n', uData.'); %// CHANGE - notice uData

【讨论】:

  • 好的,我使用了转置功能,它奏效了!谢谢你的建议。
  • @muaaQ - 我的荣幸 :) 如果我帮助了你,请考虑接受我的回答!
  • 矩阵有效,现在我需要帮助将元胞数组数据放入第一列,然后将矩阵放入后续列(已经为它打开了一个问题)。
  • @muaaQ - 看起来 Divakar 已经回答了你的问题。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多