【问题标题】:How to convert m x n matrix to (each row as) comma separted text file in MATLAB?如何在 MATLAB 中将 m x n 矩阵转换为(每行为)逗号分隔的文本文件?
【发布时间】:2019-08-14 18:52:38
【问题描述】:

我有一个包含 m x n 值的 .mat 文件。为简单起见,假设我们有 2 行 3 列:

2 4 6

2 1 4

我希望能够将这些值从 .mat 文件导出到文本文件,但是,每行都有 .mat 文件中的相应行,每行中的值用逗号分隔。对于上面的例子,在 txt 文件中,它应该是这样的:

2,4,6

2,1,4

这是我到现在为止所做的:

gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
r = gt1.gTruth.LabelData{1,1}{1,1};
allOneString = sprintf('%.0f,', r(1,:));
allOneString = allOneString(1:end-1);% strip final comma
fid=fopen('allOneString.txt','w');
fprintf(fid,'%s',allOneString);
fclose(fid);true 

我可以根据需要从 .mat 文件中提取第一行。我明白了:

492,304,78,220

但是,我不知道如何从 .mat 文件中提取多行。任何帮助将不胜感激!

附:在上面的代码中,.mat 文件中的gt1 直接没有值。我需要的值(mxn)可以使用gt1.gTruth.LabelData{1,1}{1,1}提取

【问题讨论】:

    标签: arrays string matlab matrix


    【解决方案1】:

    根据您使用的 MATLAB 版本,有两个答案。

    答案 1:对于 MATLAB 2018 及之前版本:

    gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
    r = gt1.gTruth.LabelData{1,1}{1,1};
    dlmwrite('allOneString.txt',r)
    

    答案 2:对于 MATLAB 2019(截至撰写此答案时为 2019-a)

    gt1 = load('Benchmark\AAmpiidata\groundtruth.mat');
    r = gt1.gTruth.LabelData{1,1}{1,1};
    writematrix(r,'allOneString.txt')
    

    【讨论】:

      【解决方案2】:

      这是另一种方式,它使用fprintf 进行文件写入,使用strjoin 构建格式字符串:

      r = [2 4 6;2 1 4];
      fid = fopen('allOneString.txt','w');
      fprintf(fid, [strjoin(repmat({'%.0f'}, 1, size(r,2)), ',') '\n'], r.');
      fclose(fid);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        • 2016-06-17
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        相关资源
        最近更新 更多