如何在 MATLAB 中将数据保存在 .txt 文件中 [英] How to save data in .txt file in MATLAB

查看:42
本文介绍了如何在 MATLAB 中将数据保存在 .txt 文件中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 3 个 txt 文件 s1.txt、s2.txt、s3.txt.每个文件的格式和数据数量都相同.我只想合并 3 个文件的第二列文件合并为一个文件.在合并数据之前,我按照第 1 列进行了排序:

I have 3 txt files s1.txt, s2.txt, s3.txt.Each have the same format and number of data.I want to combine only the second column of each of the 3 files into one file. Before I combine the data, I sorted it according to the 1st column:

未排序的文件:s1.txt s2.txt s3.txt

UnSorted file: s1.txt s2.txt s3.txt

1 23     2 33    3 22 
4 32     4 32    2 11
5 22     1 10    5 28
2 55     8 11    7 11

已排序的文件:s1.txt s2.txt s3.txt

Sorted file: s1.txt s2.txt s3.txt

1 23     1 10    2 11 
2 55     2 33    3 22
4 32     4 32    5 28
5 22     8 11    7 11

这是我目前的代码:

BaseFile ='s'
n=3
fid=fopen('RT.txt','w');
for i=1:n
  %Open each file consecutively 
  d(i)=fopen([BaseFile num2str(i)'.txt']);

  %read data from file
  A=textscan(d(i),'%f%f')
  a=A{1}
  b=A{2}
  ab=[a,b];

  %sort the data according to the 1st column
  B=sortrows(ab,1);

  %delete the 1st column after being sorted
  B(:,1)=[]

  %write to a new file
  fprintf(fid,'%d
',B');

  %close (d(i));

  end    
fclose(fid);

我怎样才能得到这种格式的新txt文件中的输出?

How can I get the output in the new txt file in this format?

23 10 11 
55 33 22
32 32 28
22 11 11

而不是这种格式?

23    
55    
32   
22
10    
33
32
11
11
22
28
11

推荐答案

先创建输出矩阵,再写入文件.

Create the output matrix first, then write it to the file.

这是新代码:

BaseFile ='s';
n=3;
for i=1:n % it's not recommended to use i or j as variables, since they used in complex math, but I'll leave it up to you

    % Open each file consecutively
    d=fopen([BaseFile num2str(i) '.txt']);

    % read data from file
    A=textscan(d,'%f%f', 'CollectOutput',1);

    % sort the data according to the 1st column
    B=sortrows(A{:},1);

    % Instead of deleting a column create new matrix
    if(i==1)
        C = zeros(size(B,1),n);
    end

    % Check input file and save the 2nd column
    if size(B,1) ~= size(C,1)
        error('Input files have different number of rows');
    end
    C(:,i) = B(:,2);

    % don't write yet
    fclose (d);

end

% write to a new file
fid=fopen('RT.txt','w');
for k=1:size(C,1)
    fprintf(fid, [repmat('%d	',1,n-1) '%d
'], C(k,:));
end
fclose(fid);

实际上,仅将数字写入不需要 FPRINTF 的文件.请改用 DLMWRITE:

Actually to write only numbers to a file you don't need FPRINTF. Use DLMWRITE instead:

dlmwrite('RT.txt',C,'	')

这篇关于如何在 MATLAB 中将数据保存在 .txt 文件中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆