% Oxford powder.dat to .xy converter
% © Ruben VERA 2018
% 15/11/2018
clc; clear all; close all

% 1) chargement du fichier Oxford powder.dat
[DATfilename,PathName,FilterIndex]=...
    uigetfile('*.dat','Select an Oxford xxxpowder.dat file',...
    'MultiSelect','off');
% Exemple de contenu attendu :
% [PowderExtract1dNew 1]
% 2thetadeg	d-value	intx	sigx	count
%   10.00000      8.83798    0.82803    0.02534        129
DAT=fopen(DATfilename);
% on saute les deux premières lignes pour ne récupérer que les données
fgetl(DAT);
fgetl(DAT);
A=fscanf(DAT,'%f'); % lecture de toutes les données
fclose(DAT);

% Mise en forme de la matrice en n lignes de 5 colonnes 
A=reshape(A,5,[])';

% 2) Afficher la figure en plein écran
plot(A(:,1),A(:,3)*100) % seuls les 2 theta et Intensité sont utilisés
title(DATfilename)
xlabel('Two Theta degrees')
ylabel('Intensity')
set(gcf,'units','normalized','outerposition',[0 0 1 1],...
'pointer','crosshair' );

% 3) écriture des résultats dans un fichier .xy lu par Bruker DIFFRAC.EVA
[pathstr,name,ext]=fileparts(DATfilename);
% on écrit le .xy dans le même dossier
xyFilename=fullfile(PathName,[name,'.xy']);
XY=fopen(xyFilename,'w');
fprintf(XY,'Id: "" Comment: "" Operator: "" Anode: "Cu" Scantype: "Locked Coupled" TimePerStep: "1"\r\n');
A=[A(:,1), A(:,3)*100]'; % L'intensité est amplifiée par 100
fprintf(XY,'%7.3f %12.2f\r\n',A);
fclose(XY);   