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

📄 dualteq.m

📁 多载波调制的仿真程序
💻 M
📖 第 1 页 / 共 4 页
字号:
   textPos = [grpleft+labelWidth+0.085+labelWidth  yPos textWidth textHeight];   callbackStr = 'dualteq(''setUmax'')';   str = sprintf('250');   mat = [250];   UmaxHndl = uicontrol( ...      'Style','edit', ...      'Units','normalized', ...      'Position',textPos, ...      'Max',1, ...       'Horiz','right', ...      'Background','white', ...      'Foreground','black', ...      'String',str,'Userdata',mat, ...      'callback',callbackStr);   
      % Cmin label   yPos=frmBottom-frmBorder;   labelPos = [grpleft yPos labelWidth textHeight];   h = uicontrol( ...      'Style','text', ...      'Units','normalized', ...      'Position',labelPos, ...      'Horiz','left', ...      'String','Cmin', ...      'Interruptible','off', ...      'BackgroundColor',[0.5 0.5 0.5], ...      'ForegroundColor','white');      % set Cmin   textPos = [grpleft+labelWidth-.015  yPos textWidth textHeight];   callbackStr = 'dualteq(''setCmin'')';   str = sprintf('39');   mat = [39];   CminHndl = uicontrol( ...      'Style','edit', ...      'Units','normalized', ...      'Position',textPos, ...      'Max',1, ...       'Horiz','right', ...      'Background','white', ...      'Foreground','black', ...      'String',str,'Userdata',mat, ...      'callback',callbackStr);      % Cmax label   yPos=frmBottom-frmBorder;   labelPos = [grpleft+labelWidth+.1  yPos labelWidth textHeight];   h = uicontrol( ...      'Style','text', ...      'Units','normalized', ...      'Position',labelPos, ...      'Horiz','left', ...      'String','Cmax', ...      'Interruptible','off', ...      'BackgroundColor',[0.5 0.5 0.5], ...      'ForegroundColor','white');      % set Cmax   yPos=frmBottom-frmBorder;   textPos = [grpleft+labelWidth+0.085+labelWidth  yPos textWidth textHeight];   callbackStr = 'dualteq(''setCmax'')';   str = sprintf('59');   mat = [59];   CmaxHndl = uicontrol( ...      'Style','edit', ...      'Units','normalized', ...      'Position',textPos, ...      'Max',1, ...       'Horiz','right', ...      'Background','white', ...      'Foreground','black', ...      'String',str,'Userdata',mat, ...      'callback',callbackStr);      % put all handles in userdata of the parent object   fhndlList=[freqzHnd NbHndl NwHndl NHndl CGHndl MarginHndl ...         DminHndl DmaxHndl PwrHndl AWGNHndl CSAHndl viewHndl ...      helpHndl closeHndl methodHndl h11 h21 h31 h41 h51 h61 UminHndl ...
       UmaxHndl CminHndl CmaxHndl];   set(figNumber, ...      'Visible','on', ...      'UserData',fhndlList);      drawnow   axes(freqzHnd)   set(freqzHnd,'Userdata',[])   dualteq('design')   set(gcf,'Pointer','arrow','handlevisibility','callback');   set(0,'showHiddenHandles',shh)   return         % change method elseif strcmp(action,'changemethod'),   v = get(gco,'value');     % 1=min-ISI,2=MBR
   set(gco,'userdata',v);   return      % set Nbelseif strcmp(action,'setNb'),   hndlList=get(gcf,'Userdata');   nw = get(hndlList(3),'userdata');   meth = get(hndlList(15),'value');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow Nb<1 or if MSSNR is chosen Nb<=Nw   if vv < 1 | (vv <= nw & meth == 3),       vv = v;   end   set(gco,'Userdata',vv,'String',num2str(vv));   return      % set Nwelseif strcmp(action,'setNw'),   hndlList=get(gcf,'Userdata');   nb = get(hndlList(2),'userdata');   meth = get(hndlList(15),'value');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow Nw<1 or if MSSNR is chosen Nw>=Nb   if vv <= 1 | (vv >= nb & meth == 3),      vv = v;   end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set coding gain   elseif strcmp(action,'setCG'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow negative coding gain    if vv < 0,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set margin   elseif strcmp(action,'setMargin'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow negative margin   if vv < 0,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set input power   elseif strcmp(action,'setPwr'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow negative input power   if vv < 0,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set white noise power   elseif strcmp(action,'setAWGN'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % do not allow negative noise power   if vv > 0,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set channel number   elseif strcmp(action,'setCSA'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % only have 8 CSA channel numbered 1-8   if vv < 1 | vv > 8,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set Dmin      elseif strcmp(action,'setDmin'),      hndlList=get(gcf,'Userdata');
      Dmax = get(hndlList(8),'Userdata');
   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmin cannot be smaller than 1 and larger than Dmax   if vv<1 | vv > Dmax,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set Dmax   elseif strcmp(action,'setDmax'),   hndlList=get(gcf,'Userdata');   Dmin = get(hndlList(7),'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmax cannot be smaller than 1 and Dmin   if vv < 1 | vv < Dmin,       vv = v;   end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set N   elseif strcmp(action,'setN'),   hndlList=get(gcf,'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % N has to be a power of 2   if (floor(log(vv)/log(2))-(log(vv)/log(2))) ~= 0      vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return   
      % set Umin   elseif strcmp(action,'setUmin'),   hndlList=get(gcf,'Userdata');
   Umax = get(hndlList(23),'Userdata');
   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmin cannot be smaller than 1 and larger than Dmax   if vv<1 | vv > Umax,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set Umax   elseif strcmp(action,'setUmax'),   hndlList=get(gcf,'Userdata');   Umin = get(hndlList(22),'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmax cannot be smaller than 1 and Dmin   if vv < 1 | vv < Umin,       vv = v;   end   set(gco,'Userdata',vv,'String',num2str(vv))   return   
   % set Cmin      elseif strcmp(action,'setCmin'),   hndlList=get(gcf,'Userdata');
   Cmax = get(hndlList(25),'Userdata');
   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmin cannot be smaller than 1 and larger than Dmax   if vv<1 | vv > Cmax,       vv = v;    end   set(gco,'Userdata',vv,'String',num2str(vv))   return      % set Cmax      elseif strcmp(action,'setCmax'),   hndlList=get(gcf,'Userdata');   Cmin = get(hndlList(24),'Userdata');   v = get(gco,'Userdata');   s = get(gco,'String');   vv = eval(s,num2str(v(1)));   % Dmax cannot be smaller than 1 and Dmin   if vv < 1 | vv < Cmin,       vv = v;   end   set(gco,'Userdata',vv,'String',num2str(vv))   return   % design TEQ      elseif strcmp(action,'design'),   set(gcf,'Pointer','watch');   % get handles   axHndl=gca;   fhndlList=get(gcf,'Userdata');   freqzHndl = fhndlList(1);   NbHndl = fhndlList(2);   NwHndl = fhndlList(3);   NHndl = fhndlList(4);   CGHndl = fhndlList(5);   MarginHndl = fhndlList(6);   DminHndl = fhndlList(7);   DmaxHndl = fhndlList(8);   PwrHndl = fhndlList(9);   AWGNHndl = fhndlList(10);   CSAHndl = fhndlList(11);   viewHndl = fhndlList(12);   helpHndl = fhndlList(13);   closeHndl = fhndlList(14);   methodHndl = fhndlList(15);   methRateHndl = fhndlList(16);   methSNRHndl = fhndlList(17);   methSSNRHndl = fhndlList(18);   methMSEHndl = fhndlList(19);   methDelayHndl = fhndlList(20);   methMaxHndl = fhndlList(21);
   UminHndl = fhndlList(22);
   UmaxHndl = fhndlList(23);
   CminHndl = fhndlList(24);
   CmaxHndl = fhndlList(25);      colors = get(gca,'colororder');      % init variables   Nb = get(NbHndl,'userdata');   Nw = get(NwHndl,'userdata');   N = get(NHndl,'userdata');   codingGain = get(CGHndl,'userdata');   margin = get(MarginHndl,'userdata');   Dmin = get(DminHndl,'userdata');   Dmax = get(DmaxHndl,'userdata');   totalInputPower = get(PwrHndl,'userdata');   AWGNpower = get(AWGNHndl,'userdata');   loopNum = get(CSAHndl,'userdata');   method = get(methodHndl,'value');
   UsedMin=get(UminHndl,'userdata');
   UsedMax=get(UmaxHndl,'userdata');
   CdualMin=get(CminHndl,'userdata');
   CdualMax=get(CmaxHndl,'userdata');   barflag = 0;   %number of iteration per TEQ tap   numIter = 1000;      %generate signal,noise, and channel data   [recNoisySig,receivedSignal,noise,channel,inputSignal,gamma,fs] = ...      siggen(N,AWGNpower,loopNum,totalInputPower,codingGain,margin,barflag);    %save tmp1.mat inputSignal, receivedSignal, noise;   %estimate the power spectrums   [inputSpecAll, noiseSpecAll, channelGainAll]=...      specestim(inputSignal,noise,channel,N,barflag);   
   %first pass for whole bandwidth teq design
   usedSubs = [UsedMin:UsedMax]';

⌨️ 快捷键说明

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