function [T,E,ElemList]=wdc_minute_read_fun(file,ElemNeed)
% Считывание требуемого элемента поля из файла минутных данных формата WDC
%
%       [T,E,ElemList]=wdc_minute_read_fun(file,ElemNeed);
%
% file      - файл с данными
% ElemNeed  - требуемый элемент поля ('H','D',...)
% T         - сериальная дата
% E         - данные для требуемого элемента (в нТл или угл.мин.)
% ElemList  - список элементов поля, имеющихся в файле

% 24.03.2013 - С.Хомутов, Паратунка, Камчатский край

% file='mmb9308m.wdc';
if ~exist(file,'file'),
    error('!!! Не могу найти файл !!!')
end
fid=fopen(file,'rt');
    str=char(fread(fid))';
fclose(fid);
RecLength=401;  % длина записи, включая <cr> и <lf>
NRec=length(str)/RecLength; % количество записей
if rem(NRec,1)~=0,
    error('!!! Ошибка формата данных !!!')
end
str=reshape(str',RecLength,NRec)';  % формат матрицы
Elem=str(:,19);                     % Элемент поля (D,I,H,X,Y,Z,F)
ElemList=unique(Elem)';     % элементы поля в файле
if isempty(findstr(ElemList,ElemNeed)),     % нет такого элемента в файле
    error('!!! В файле нет запрашиваемых данных !!!')
end

% преобразуем в вектора элементов данных
CoLat=str2num(str(:,1:6))/1000;     % Ко-Широта
Lon=str2num(str(:,7:12))/1000;      % Долгота (0-360 на Восток)
Year=str2num(str(:,13:14));         % Год (последние 2 цифры)
Month=str2num(str(:,15:16));        % Месяц
Day=str2num(str(:,17:18));          % День
Hour=str2num(str(:,20:21));         % Час (00-23)
ObsCode=str(22:24);                 % Код обсерватории IAGA
Yc=str2num(str(:,26));              % Столетие
DataCode=str(:,27);                 % тип данных: Preliminary=P, Definitive=D
Data=str2num(str(:,35:394));        % 60 минутных значений для каждого часа
DataMean=str2num(str(:,395:400));   % среднечасовое значение
clear str;

k=Elem==ElemNeed;
n=sum(k); nm=ones(n,1);
% формируем вектор времени
T=datenum(nm.*Year(k)+1900,nm.*Month(k),nm.*Day(k),nm.*Hour(k),0,0);
T=repmat(T,1,60)+repmat(0:59,n,1)/1440; T=T';T=T(:);
E=Data(k,:)'; E=E(:);

if ElemNeed=='D' | ElemNeed=='I',
    E=E/10;
end
