📄 tfb.m
字号:
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% Margin label
btnNumber=5;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','Margin (dB)', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set margin
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setMargin'')';
str = sprintf('6');
mat = [6];
MarginHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% Dmin label
btnNumber=6;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','Dmin', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set Dmin
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setDmin'')';
str = sprintf('15');
mat = [15];
DminHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% Dmax label
btnNumber=7;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','Dmax', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set Dmax
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setDmax'')';
str = sprintf('35');
mat = [35];
DmaxHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% input power label
btnNumber=8;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','Input power (dBm)', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set input power
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setPwr'')';
str = sprintf('23');
mat = [23];
PwrHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% AWGN power label
btnNumber=9;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','AWGN pow (dBm/Hz)', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set AWGN power
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setAWGN'')';
str = sprintf('-140');
mat = [-140];
AWGNHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% channel number label
btnNumber=10;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom labelWidth textHeight];
h = uicontrol( ...
'Style','text', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','CSA loop # (1-8)', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white');
% set channel number
textPos = [labelLeft+labelWidth-.015 labelBottom textWidth+.025 textHeight];
callbackStr = 'tfb(''setCSA'')';
str = sprintf('1');
mat = [1];
CSAHndl = uicontrol( ...
'Style','edit', ...
'Units','normalized', ...
'Position',textPos, ...
'Max',1, ...
'Horiz','right', ...
'Background','white', ...
'Foreground','black', ...
'String',str,'Userdata',mat, ...
'callback',callbackStr);
% heuristic delay search
btnNumber=11;
yPos=menutop-(btnNumber-1)*(btnHt+spacing);
top = yPos - btnHt - spacing;
labelWidth = frmWidth-textWidth-.01;
labelBottom=top-textHeight;
labelLeft = left;
labelPos = [labelLeft labelBottom+0.01 labelWidth textHeight];
mat=[1];
callbackStr='tfb(''setHDelaySearch'');';
hd = uicontrol( ...
'Style','radio', ...
'Units','normalized', ...
'Position',labelPos, ...
'Horiz','left', ...
'String','heuristic delay', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white',...
'Userdata',mat,...
'Value',1,...
'callback',callbackStr);
% optimal delay search
textPos = [labelLeft+labelWidth-.07 labelBottom+0.01 textWidth+.08 textHeight];
callbackStr='tfb(''setODelaySearch'');';
od = uicontrol( ...
'Style','radio', ...
'Units','normalized', ...
'Position',textPos, ...
'Horiz','left', ...
'String','optimal delay', ...
'Interruptible','off', ...
'BackgroundColor',[0.5 0.5 0.5], ...
'ForegroundColor','white',...
'Userdata',mat,...
'value',0,...
'callback',callbackStr);
% graphic selection menu
labelStr=['TFB bit allocation|TFB sub-SNR|bit rate vs. delay'];
callbackStr='tfb(''plotGraph'');';
mat = 1;
viewHndl=uicontrol( ...
'Style','popupmenu', ...
'Units','normalized', ...
'Position',[left frmBottom+3*(btnHt+spacing) btnWid btnHt], ...
'String',labelStr,'Userdata',mat, ...
'Interruptible','on', ...
'Callback',callbackStr);
% run button
labelStr='Calculate';
callbackStr='tfb(''design'')';
closeHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[left frmBottom+2*(btnHt+spacing) btnWid btnHt], ...
'String',labelStr, ...
'Callback',callbackStr);
% save teq button
labelStr='Save Equalizer';
callbackStr='tfb(''savetfb'')';
helpHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[left frmBottom+btnHt+spacing btnWid/2 btnHt], ...
'String',labelStr, ...
'Callback',callbackStr);
% save all button
labelStr='Save Parameters';
callbackStr='tfb(''saveall'')';
helpHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[left+btnWid/2 frmBottom+btnHt+spacing btnWid/2 btnHt], ...
'String',labelStr, ...
'Callback',callbackStr);
% help button
labelStr='Information';
callbackStr='tfb(''info'')';
helpHndl=uicontrol( ...
'Style','pushbutton', ...
'Units','normalized', ...
'Position',[left frmBottom btnWid btnHt], ...
'String',labelStr, ...
'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 hd od];
set(figNumber, ...
'Visible','on', ...
'UserData',fhndlList);
drawnow
axes(freqzHnd)
set(freqzHnd,'Userdata',[])
tfb('design')
set(gcf,'Pointer','arrow','handlevisibility','callback');
set(0,'showHiddenHandles',shh)
return
% change method
elseif strcmp(action,'changemethod'),
v = get(gco,'value');
% 1=MMSE-UEC,2=MMSE-UTC,3=MSSNR,4=GEO,5=min-ISI,6=MBR,7=DCC,8=DCM,9=MP,
% 10=MMP, 11=Eig-App 12=ARMA
set(gco,'userdata',v);
return
% set Nb
elseif 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 Nw
elseif 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');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -