% rfits v1.0
% Autor: Angel de la Torre
% Marzo 2004 
% Nota: La imagen fit se almacena en una matriz llamada R (creo) - L. Lara

%clear;
% fichero y rango de cuentas (introducir estos datos)
base= input('Introduce el nombre del fichero de la imagen fits sin extension: ', 's');
fichero=sprintf('%s.fit',base);
%fichero_out_color=sprintf('%s_color.jpg',base);
%fichero_out=sprintf('%s.jpg',base);

mediana_on=1;

% determinacion del tamaño de la cabecera
f=fopen(fichero,'r');
A=fread(f,'char');
fclose(f);
pos=findstr(A',' END ');
A(1:(pos+4))=' ';
B=(A==' ');
I=length(B);
i=1;
while i<I
    if B(i)==0
        pos=i-1;
        i=I;
    end
    i=i+1;
end

clear A,B;

% lectura de los datos
f=fopen(fichero,'r','b');
header=fread(f,(pos+4),'char');
header2=sprintf('%c',header);
pos_bitpix=findstr(header2,'BITPIX');
pos_naxis1=findstr(header2,'NAXIS1');
pos_naxis2=findstr(header2,'NAXIS2');

bitpix=sscanf(header2(pos_bitpix+9:end),'%d',1);
sizex=sscanf(header2(pos_naxis1+9:end),'%d',1);
sizey=sscanf(header2(pos_naxis2+9:end),'%d',1);
if bitpix==16
    tipo='ushort';
    correccion=256*128;
else if bitpix==32
        tipo='uint';
        correccion=256*256*256*128;
else
    warning('Este programa solo esta preparado para leer ficheros con 16 o 32 bits/pixel')
end
end

fseek(f,pos,-1);
%fseek(f,5760,-1);
R=fread(f,sizex*sizey,tipo);

fclose(f);

fprintf('\n')
fprintf('Bits/pixel = %d', bitpix)
fprintf('\n')
fprintf('Tamaño =  %d x %d',sizex, sizey)
fprintf('\n')
fprintf('Imagen FITS cargada correctamente en MATLAB')