comparision data in matlab

2 Ansichten (letzte 30 Tage)
Devang Anadkat
Devang Anadkat am 13 Mär. 2021
Bearbeitet: Walter Roberson am 12 Mai 2021
this is first file
4.0004000e+02 2.2576667e+03
4.0006000e+02 2.7194000e+03
4.0008000e+02 2.9347143e+03
4.0010000e+02 3.0555556e+03 &
this is second file
400.04 0.2702
400.05 0.27026
400.06 0.27031
400.07 0.27036
400.08 0.27041
in this both files first colomn is of wavelength and other one is of intensity. i got the wavelength which are same in both files say 400.04 400.06 etc.. but in both files intensity is different corresponding to that same wavelength. so now i want the table in which i got first colomn is of wavelength which are common in both file second colomn is of intensity which is in file 1 corresponding to common wavelength and 3rd colomn is of intensity which is in file 2.

Akzeptierte Antwort

Star Strider
Star Strider am 13 Mär. 2021
I am not certain of the result you want.
Try this:
File1 = [4.0004000e+02 2.2576667e+03
4.0006000e+02 2.7194000e+03
4.0008000e+02 2.9347143e+03
4.0010000e+02 3.0555556e+03];
File2 = [400.04 0.2702
400.05 0.27026
400.06 0.27031
400.07 0.27036
400.08 0.27041];
File1_intrp = interp1(File1(:,1), File1(:,2), File2(:,1));
CombinedFiles = [File2(:,1) File2(:,2), File1_intrp]
producing:
CombinedFiles =
400.04 0.2702 2257.7
400.05 0.27026 2488.5
400.06 0.27031 2719.4
400.07 0.27036 2827.1
400.08 0.27041 2934.7
If you want the opposite result:
File1_intrp = interp1(File2(:,1), File2(:,2), File1(:,1), 'linear','extrap');
CombinedFiles = [File1(:,1) File1(:,2), File1_intrp]
producing:
CombinedFiles =
400.04 2257.7 0.2702
400.06 2719.4 0.27031
400.08 2934.7 0.27041
400.1 3055.6 0.27051
One of these should do what you want.
  2 Kommentare
Devang Anadkat
Devang Anadkat am 13 Mär. 2021
I got it perfactly. thank you
Star Strider
Star Strider am 13 Mär. 2021
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (4)

Jan
Jan am 13 Mär. 2021
I have posted the code almost as you need it in your other question:
[Common, iA, iB] = intersect(A(:, 1), B(:, 1));
A(:, 3) = NaN;
A(iA, 3) = B(iB, 2)
A problem can be, that the imported string "4.0004000e+02" need not be exactly the same as 400.04, when rounding errors occur. If there are tiny differences, use round and a sufficient number of decimals.

r r
r r am 11 Mai 2021
I have two files with similar data and I want to extract them into a file, and I also want to print the same line for the same data in the two files
Please help me
F1 = fopen('E.txt');
T1 = textscan(F1,'%s', 'delimiter', '\n');
fclose(F1);
F2 = fopen('G.txt');
tt2 = textscan(F2,'%s', 'delimiter', '\n');
fclose(F2);
T1s = char(T1{:});
T2s = char(T2{:});
[C,ix,ic] = intersect(T1s,T2s,'rows')
%%%%%%%%%%%%%%%%%%out Fiel :::
dlmwrite('R.txt',C,'%.6f');

r r
r r am 11 Mai 2021
I have two files in which there are numbers in the first column that are similar and I want to print the line that matches and differs in the number of the first column in the two files:
%%%%%%%%%%%%%%%%%%%%%%% Fiel.1
fid1 = fopen( 'E1.txt', 'rt' );
T1 = textscan(fid1,'%s', 'delimiter', '\n');
%codes1 = textscan( fid1, '%*s%*s%*s%*s%*s%*s%s', 'Delimiter','|' );
fclose( fid1 );
%%%%%%%%%%%%%%%%%%%%%%%%%%Fiel.2
fid2 = fopen( 'G1.txt', 'rt' );
T2 = textscan(fid2,'%s', 'delimiter', '\n');
%codes2 = textscan( fid2, '%*s%*s%*s%*s%*s%*s%s', 'Delimiter','|' );
fclose( fid2 );
%%%%%%%%%%%%%%%%%%%%%%%%%%%
T1s = char(T1{:});
T2s = char(T2{:});
%Similar data between two files::
%[C,ix,ic] = intersect(T1s,T2s,'rows')
%Differences data between two files::
[B,ib,ib] = visdiff(T1s,T2s,'rows')
%%%%%%%%%%%%%%%%%%%%print output:::
fid = fopen( 'Similar.txt', 'wt' );%Print all similar lines
fprintf('%s\n',C)
fclose( fid ) ;
fid = fopen( 'Different.txt', 'wt' );%Print all different lines
fprintf('%s\n',B)
fclose( fid );

r r
r r am 11 Mai 2021
Bearbeitet: Walter Roberson am 12 Mai 2021
%%%I want to print the line for the first column that shares the same number for the two filesd=load('E1.txt');
x1=d(:,1);
x2=d(:,2);
x3=d(:,3);
x4=d(:,4);
x5=d(:,5);
x6=d(:,6);
u=load('G1.txt');
x11=d(:,1);
x21=d(:,2);
x31=d(:,3);
x41=d(:,4);
x51=d(:,5);
x61=d(:,6);
% indices = find(x1(:,1) == x11(:,1));
%fid = fopen('cc.txt','wt');
%fprintf(fid, '%s ', indices);
%fprintf(fid, '\n');
%%%%%%%%%%%%%or%%%%%%%%or
if x11(:,1) == x1(:,1)
fid = fopen('cc.txt','wt');
fprintf(fid, '%s ', indices);
fprintf(fid, '\n');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by