2

我有 3 个带有浮点数据的 txt 文件。每个文件有 17 行。第一个文件有 3 列,其他两个各有 1 列。我正在尝试将这些文件连接到一个大文件中,这样我在一个文件中就有 5 列这些文件。我会这样做:

alldata = [ ];        
  fid2 = fopen(CombinAttrDiff, 'wt')        
NumberOfFiles = 3        
for K = 1 : NumberOfFiles   %looping over all of the files        
thisfile = sprintf('AttrDiff%d.txt',K)        
thisdata = load(thisfile);        
 alldata = [alldata, thisdata];         
end        
      fprintf(fid2, '%f %f %f %f %f\n',alldata);        
fclose all           

打印出来的大输出文件不会垂直连接文件 - 第一个文件的第一列的所有值都由大输出文件的行填充,然后取第二列并继续按行填充。我在这里做错了什么?将文件连接到一个文件中以便以后将其用作矩阵是否是正确的方法。我希望新创建的文件的每一行都是这样的向量数组 a=[0.32588 0.58425 0.35887 0.00004 0.75544]。我需要这个,所以我可以在之后比较那些行(数组)。我打算对大文件应用重塑以获取矩阵。

我是matlab的新手,并且已经尝试了几天完成这项工作。非常感谢任何帮助!谢谢!

4

1 回答 1

2

尝试

fprintf( fid2, '%f %f %f %f %f\n', alldata.');

编辑: 为什么这个改变有效?

Matlab 以“列堆栈”方式将其数组存储在内存中:也就是说,内存中的第二个元素是alldata(2,1). 因此,当您打印alldatafid2matlab 时,会根据元素的“内存中”顺序对元素进行排序,而不管您提供的格式字符串如何。转置数组会更改顺序以适应您的意图。

于 2013-01-07T12:28:12.443 回答