⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multiplotber.m

📁 OFDMA 物理层开发的matlab 源码.飞思卡尔提供.对物理层开发的工程师有帮助!
💻 M
字号:
% plts mlutiples .mat

%--------------------------------------------------------------------------
function fignum = multiplotBER(varargin)


if isnumeric(varargin{1,end}) %fignum provided
   fignum = varargin{1,end};
   varargin = varargin(1,1:end-1);
else
    fignum = -1;
end

if size(varargin,2)>8
   error('max number of files is 6') %otherwise not nice, too many plots
end 


%colormap;
firstTime=1;
plotLegend={};
h=[];
myColormap = [
    0.0, 0.0, 1.0; ... %blue
    1.0, 0.0, 0.0; ... %red
    0.0, 1.0, 0.0; ... %green
    0.0, 0.0, 0.0; ... %black
    0.75, 0.75, 0.75; ... %grey
    1.0, 0.0, 1.0; ... %magenta
    0.6, 0.4, 0.2; ... %brown
    0.0, 0.7, 1.0; ... %cyan
    1.0, 1.0, 0.0; ... %yellow
    1.0, 1.0, 1.0; ... %white
    1.0, 1.0, 0.7; ... %yellow (light)
    0.7, 0.7, 1.0; ... %blue (light)
    1.0, 0.7, 0.7; ... %red (light)
    0.8, 1.0, 0.8; ... %green (light)
    0.8, 0.7, 0.4; ... %beige
    0.6, 0.0, 0.6; ... %violett
    0.8, 0.8, 0.8  ... %grey (light)
    ];

for i=1:size(varargin,2)

    %try to load .mat

    %check if .mat or data
    temp = [varargin{1,i}];
    if ischar(temp)

        if ~exist([varargin{1,i}],'file')
            error([varargin{1,i} ' not found.']);

        else % valid .mat file
            disp(['Ploting ' varargin{1,i} '...']);
            clear data
            feval(@load, varargin{1,i}) %load data
        end


    elseif  isstruct(temp) %structure provided
        data = varargin{1,i} ;   
    else
        error('Non valid data')
    end

    if exist('data')==0
        
        if  exist('SNR') & exist('CountedErrors') & exist('SimulatedBits') 
            data.SNR=SNR;data.CountedErrors=CountedErrors;data.SimulatedBits=SimulatedBits;
            plotLegend{1,end+1}=['title not available'];
        else
           error('Non valid data') 
        end
        
    else
        if isfield(data,'SNR')*isfield(data,'CountedErrors')*isfield(data,'SimulatedBits')
            plotLegend{1,end+1}=[data.plotTitle];

        end
    end

    if firstTime %execute first time only

        if fignum==-1
            fignum = figure;
        else
            figure(fignum)
        end
            
        h=singlePlotBER(data,firstTime,myColormap(i,:),h);
        grid on
        set(gca, 'YMinorGrid', 'off');
        %set(gca, 'YMinorGrid', 'on');
        xlabel('SNR')
        ylabel('BER')
        %t=title('D');set(t,'Interpreter','none');

        firstTime=0;
    else
        h=singlePlotBER(data,firstTime,myColormap(i,:),h);
    end

    %    end

end


if firstTime==0

    global myLegend
    global myTitle

    if ~isempty(myTitle);
        t=title(myTitle);set(t,'Interpreter','none');
    end

    if ~isempty(myLegend);
        l=legend([h],myLegend);
        set(l,'Interpreter','none');
    else
        l=legend([h],plotLegend);
        set(l,'Interpreter','none');
    end

    hold off
end














%--------------------------------------------------------------------------
function h=singlePlotBER(data,firstTime,myColor,h)

%--+1 SNR
data.SNR=data.SNR+1;

%-- Plot graph
tab=find(data.CountedErrors~=0);
CE_wo0 = data.CountedErrors(tab);
S_wo0 = data.SimulatedBits(tab);
snr_wo0 = data.SNR(tab);
%semilogy(data.SNR,data.CountedErrors./data.SimulatedBits,'.','Color',myColor );%
semilogy(snr_wo0,CE_wo0./S_wo0,'.','Color',myColor );
if firstTime
    hold on
end

if ~isempty(tab)
    if isfield(data,'trend')*0 & all(data.trend>=0) & size(data.trend,2)>1

        %hack
        data.snrRange_nomodif=data.snrRange_nomodif+1;
        data.snrRange_extrapol=data.snrRange_extrapol+1;

        if isfield(data,'trendSNR')
            data.trendSNR=data.trendSNR+1;
            h(end+1,1)=semilogy(data.trendSNR,data.trend, '-','Color',myColor);
        else
            %n1=size(data.snrRange_nomodif,2);
            n1=min(size(data.snrRange_nomodif,2),size(data.trend,2));
            h(end+1,1)=semilogy(data.snrRange_nomodif,data.trend(1:n1), '-','Color',myColor);
            
        end
        %n1=size(data.snrRange_nomodif,2);
        %n1=min(size(data.snrRange_nomodif,2),size(data.trend,2));

        %data.snrRange_nomodif_wo0 = data.snrRange_nomodif(tab);

        %h(end+1,1)=semilogy(data.SNR_wo0,data.trend(1:n1), '-','Color',myColor);
        %h(end+1,1)=semilogy(data.trendSNR,data.trend, '-','Color',myColor);

        %no extrapolation yet
        %semilogy(data.snrRange_extrapol,data.trend(n1+1:end), ':','Color',myColor);
        %    semilogy(data.snrRange_extrapol,data.trend(n1+1:end), ':','Color',myColor);

    else
        h(end+1,1)=semilogy(snr_wo0,CE_wo0./S_wo0, '-','Color',myColor);
    end
end
%--------------------------------------------------------------------------




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -