matlab - 在 Matlab 中,如何在任意大的矩阵上执行 fprintf 命令

标签 matlab matrix scanf printf

我正在使用 matlab 分析大型数据集。我希望能够在这个矩阵上按照 fprintf 命令运行一些东西,它有大约 22000 列。所以,这是我到目前为止的想法:

j=22;
for i = 1:j;
    fname = fopen(strcat('chr', num2str(i), '.out'), 'r');
    A = fscanf(fname, '%d', [1000,inf]);
    FIDW = fopen(strcat('chrproc', num2str(i), '.out'), 'w+');
    fprintf(FIDW, '%d\t%d\t%d\t%d\t%d\t%d\t\n', B);
end

有 22 个这种大小的文件将通过第 1-4 行转换为矩阵。然而,棘手的部分(至少对我而言)是 fprintf 要求您提供格式。因为这些文件太大,所以没有真正的方法可以输入 %d\t。

也许 fgetl 命令更好?但是 fgetl 不会打印到文件,更重要的是,fgetl 返回一个字符串,这对我来说效果不佳。真的,像 fscanf 命令这样的东西会很棒,除了读取而不是打印...

非常感谢您的帮助和建议。

最佳答案

您可以使用此 matlab 文档中描述的选项之一。可能性是:

  • save -ascii(注意科学记数法)
  • dlmwrite
  • fprintf 正如您所提到的,格式定义为 fmt = repmat('%d\t',1,8); (8 将被您的实际列数)

或者,您可以使用以下名为 saveascii 的文件交换功能.

关于matlab - 在 Matlab 中,如何在任意大的矩阵上执行 fprintf 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499028/

相关文章:

python - 用于处理多元多项式的库

r - 找到 r 中值最低的列

C++ 错误代码 C2784 无法推断模板参数

c - 以特殊方式从文件中读取 float

C:扫描期间的动态分配

c - 用这个简单的代码发现错误?

matlab - 我怎样才能真正减少 PCA 的特征维度?

java - 我想用java实现matlab的roots函数(多项式的根)

python - 从 Simulink 模型获取模型拓扑

r - R 中非常大的稀疏矩阵的列重新缩放