comparision data in matlab

2 visualizaciones (últimos 30 días)
Devang Anadkat
Devang Anadkat el 13 de Mzo. de 2021
Editada: Walter Roberson el 12 de Mayo de 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.

Respuesta aceptada

Star Strider
Star Strider el 13 de Mzo. de 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 comentarios
Devang Anadkat
Devang Anadkat el 13 de Mzo. de 2021
I got it perfactly. thank you
Star Strider
Star Strider el 13 de Mzo. de 2021
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (4)

Jan
Jan el 13 de Mzo. de 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 el 11 de Mayo de 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 el 11 de Mayo de 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 el 11 de Mayo de 2021
Editada: Walter Roberson el 12 de Mayo de 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
%%%%%%%%%%%%%%%%%%%%%%%%%%

Categorías

Más información sobre String Parsing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by