How to save data in a TXT file in MATLAB

I have 3 txt files s1.txt, s2.txt, s3.txt . Each has the same format and amount of data. I want to merge only the second column of each of the three files into one file. Before combining the data, I sorted them by the 1st column:

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 

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 

Here is the code that I still have:

 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\n',B'); %close (d(i)); end fclose(fid); 

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

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

instead of this format?

 23 55 32 22 10 33 32 11 11 22 28 11 
+6
file format file-io matlab text-files
source share
1 answer

First create an output matrix, then write it to a file.

Here is the new code:

 BaseFile ='s'; n=3; for i=1:n % it 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\t',1,n-1) '%d\n'], C(k,:)); end fclose(fid); 

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

 dlmwrite('RT.txt',C,'\t') 
+10
source share

All Articles