Code covered by the BSD License  

Highlights from
spec file reader

image thumbnail
from spec file reader by Zhang Jiang
Monitor, read, save scans from SPEC files and calculate true reflectivity.

truerefmerge(varargin)
function truerefmerge(varargin)
% TRUEREFMERGE Called by trueref to load current plots and call mrgker to
%   merge them.
%
% Copyright 2004, Zhang Jiang

hFigSpecr = findall(0,'Tag','specr_Fig');
hFigTrueref = findall(0,'Tag','trueref_Fig');
hAxes = findall(hFigTrueref,'Tag','trueref_Axes');

settings = getappdata(hFigSpecr,'settings');
merge = settings.merge;

% --- return if no data imported
if isappdata(hFigTrueref,'data')
   data = getappdata(hFigTrueref,'data');
else
    return;
end
if isempty(data.ref) & isempty(data.neg) & isempty(data.pos)
    return;
end

% --- merge data by calling truerefmergeker.m
data.mrg = cell(1,3);
try
    if ~isempty(data.ref)
        data.mrg{1} = mrgker(data.ref,merge);
    end
    if ~isempty(data.pos)
        data.mrg{2} = mrgker(data.pos,merge);
    end
    if ~isempty(data.neg)
        data.mrg{3} = mrgker(data.neg,merge);
    end
    setappdata(hFigTrueref,'data',data);
catch
    uiwait(msgbox('Merging failed. Check selected scans.','Merge Error','error','modal'));
    return;
end

% --- determine which curve to plot: all, ref, pos or neg
hLine = findall(hAxes,'Type','line');
if isempty(hLine)
    plot_str = 'All';
else
    % --- remove datatipmarkers from hLine
    tempHLine = [];;
    for iLine = 1:length(hLine)
        if ~strcmp(get(hLine(iLine),'Tag'),'DataTipMarker')
            tempHLine(length(tempHLine)+1) = hLine(iLine);
        end
    end
    hLine = tempHLine';
    tag_str = get(hLine,'Tag');
    if iscell(tag_str)
        tag_str = tag_str';
        for iTag_str = 1:length(tag_str)
            tag_str{iTag_str} = tag_str{iTag_str}(1:3);
        end
        tag_str = cell2mat(tag_str);
    else
        tag_str = tag_str(1:3);
    end
    if ~isempty(findstr(tag_str,'mrg'))
        plot_str = 'All';
    elseif ~isempty(findstr(tag_str,'ref')) &...
            isempty(findstr(tag_str,'pos')) &...
            isempty(findstr(tag_str,'neg'))
        plot_str = 'Ref';
    elseif  isempty(findstr(tag_str,'ref')) &...
           ~isempty(findstr(tag_str,'pos')) &...
            isempty(findstr(tag_str,'neg'))
        plot_str = 'Pos';
    elseif  isempty(findstr(tag_str,'ref')) &...
            isempty(findstr(tag_str,'pos')) &...
           ~isempty(findstr(tag_str,'neg'))
        plot_str = 'Neg';
    else
        plot_str = 'All';
    end
end
switch plot_str
    case 'All'
        iLine_start = 1;
        iLine_end = 3;
    case 'Ref'
        iLine_start = 1;
        iLine_end = 1;
    case 'Pos'
        iLine_start = 2;
        iLine_end = 2;
    case 'Neg'
        iLine_start = 3;
        iLine_end = 3;
end
% --- plot merged data
cla(hAxes);
tag_str = {'mrgReflectivity';'mrgPositiveLongDiffuse';'mrgNegativeLongDiffuse'};
color_str = {'k';'b';'g'};
for iLine = iLine_start:iLine_end
    if ~isempty(data.mrg{iLine})
        hNewLine = line('Parent',hAxes,...
            'XData',data.mrg{iLine}(:,1)',...
            'YData',data.mrg{iLine}(:,2)',...
            'Tag',tag_str{iLine});
        setappdata(hNewLine,'ydataError',data.mrg{iLine}(:,3));
        set(hNewLine,...
            'Color',color_str{iLine},...
            'LineStyle','-',...
            'Marker','o',...
            'MarkerSize',3,...
            'MarkerFaceColor','m');
    end
end
set(hAxes,...
    'XGrid',get(hAxes,'XGrid'),...
    'YGrid',get(hAxes,'YGrid'),...
    'XScale',get(hAxes,'XScale'),...
    'YScale',get(hAxes,'YScale')...
    );

curvelegend(hFigTrueref);
resettoolbar(hFigTrueref);


Contact us at files@mathworks.com