📄 yhzviewini.m
字号:
% cb1_pos(3) = label_ext(3)+checkbox_width;
% set(ud.ht.cb(1),'position', cb1_pos);
%end
cb2_pos = [phf(1)+sz.fus phf(2)+sz.uh+sz.fus sz.bw sz.uh];
ud.ht.cb(2) = uicontrol(cb_props{:},...
'string','相位',...
'tag','phasecheck',...
'value',ud.prefs.plots(2),...
'callback','yhzfdview(''cb'',2)',...
'position',cb2_pos);
%if ~isunix
% label_ext = get(ud.ht.cb(2),'extent');
% cb2_pos(3) = label_ext(3)+checkbox_width;
% set(ud.ht.cb(2),'position', cb2_pos);
%end
ud.ht.cb(3) = uicontrol(cb_props{:},...
'string','群时延',...
'tag','groupdelay',...
'value',ud.prefs.plots(3),...
'callback','yhzfdview(''cb'',3)',...
'position',[pf(1)+2*sz.fus pf(2)+4*sz.fus+3*sz.uh sz.bw sz.uh]);
ud.ht.cb(4) = uicontrol(cb_props{:},...
'string','零极点图',...
'tag','polezero',...
'value',ud.prefs.plots(4),...
'callback','yhzfdview(''cb'',4)',...
'position',[pf(1)+2*sz.fus pf(2)+3*sz.fus+2*sz.uh sz.bw sz.uh]);
ud.ht.cb(5) = uicontrol(cb_props{:},...
'string','脉冲响应',...
'tag','impresp',...
'value',ud.prefs.plots(5),...
'callback','yhzfdview(''cb'',5)',...
'position',[pf(1)+2*sz.fus pf(2)+2*sz.fus+sz.uh sz.bw sz.uh]);
ud.ht.cb(6) = uicontrol(cb_props{:},...
'string','阶跃响应',...
'tag','stepresp',...
'value',ud.prefs.plots(6),...
'callback','yhzfdview(''cb'',6)',...
'position',[pf(1)+2*sz.fus pf(2)+sz.fus sz.bw sz.uh]);
% ====================================================================
% Popups
pop_props = {'units','pixels',...
'style','popup','horizontalalignment','left'};
% Tweak position & size of popups: [horz_pos ver_pos width height]
%switch computer
%case 'MAC2'
% popTweak = [0 -2 0 0];
%case 'PCWIN'
popTweak = [0 0 0 0];
%otherwise % UNIX
% popTweak = [0 -2 0 0];
%end
switch ud.prefs.magmode
case 'linear'
magpopvalue = 1;
case 'log'
magpopvalue = 2;
case 'decibels'
magpopvalue = 3;
end
ud.ht.magpop = uicontrol(pop_props{:},...
'string',{'linear'; 'log'; 'decibels'},...
'tag','maglist',...
'callback','yhzfdview(''magpop'')',...
'value',magpopvalue,...
'position',[mf(1:2)+sz.fus+[indentPop 0] sz.bw-indentPop sz.uh]+popTweak);
switch ud.prefs.phasemode
case 'degrees'
phasepopvalue = 1;
case 'radians'
phasepopvalue = 2;
end
ud.ht.phasepop = uicontrol(pop_props{:},...
'string',{'degrees'; 'radians'},...
'tag','phaselist',...
'callback','yhzfdview(''phasepop'')',...
'value',phasepopvalue,...
'position',[phf(1:2)+sz.fus+[indentPop 0] sz.bw-indentPop sz.uh]+popTweak);
switch ud.prefs.freqscale
case 'linear'
fscalevalue = 1;
case 'log'
fscalevalue = 2;
end
ud.ht.fscalepop = uicontrol(pop_props{:},...
'string',{'linear'; 'log'},...
'tag','freqscale',...
'callback','yhzfdview(''fscalepop'')',...
'value',fscalevalue,...
'position',[fsf(1:2)+sz.fus+[indentPop 0] sz.bw-indentPop sz.uh]+popTweak);
ud.ht.frangepop = uicontrol(pop_props{:},...
'string',{'[0..Fs/2]'; '[0..Fs]'; '[-Fs/2..Fs/2]'},...
'tag','freqrange',...
'callback','yhzfdview(''frangepop'')',...
'value',ud.prefs.freqrange,...
'position',[frf(1:2)+sz.fus+[indentPop 0] sz.bw-indentPop sz.uh]+popTweak);
% ====================================================================
% Create axes:
ax_props = {
'units','pixels',...
'box','on',...
'parent',fig};
% create axes:
for i=1:6
ud.ht.a(i) = axes(ax_props{:});
end
ud.titles = { 'Magnitude'
{ 'Phase (degrees)' 'Phase (radians)' }
'Group Delay'
'Zeros & Poles'
'Impulse Response'
'Step Response'};
ud.tags = { 'magaxes'
'phaseaxes'
'delayaxes'
'pzaxes'
'impaxes'
'stepaxes' };
ud.xlabels = { 'Frequency'
'Frequency'
'Frequency'
'Real'
'Time'
'Time' };
ud.ylabels = { ''
''
''
'Imaginary'
''
''};
th = get(ud.ht.a,'title');
set([th{[1 3:6]}],{'string'},ud.titles([1 3:6]))
switch ud.prefs.phasemode
case 'degrees'
set(th{2},'string',ud.titles{2}(1))
case 'radians'
set(th{2},'string',ud.titles{2}(2))
end
if fscalevalue == 2
set(ud.ht.a([1 2 3]),'xscale','log')
end
if magpopvalue == 2
set(ud.ht.a(1),'yscale','log')
end
set([th{:}],{'tag'},ud.tags)
set(ud.ht.a,{'tag'},ud.tags)
xh = get(ud.ht.a,'xlabel');
set([xh{:}],{'string'},ud.xlabels,{'tag'},ud.tags)
yh = get(ud.ht.a,'ylabel');
set([yh{:}],{'string'},ud.ylabels,{'tag'},ud.tags)
% ====================================================================
% initialize lines
ud.lines.mag = [];
ud.lines.phase = [];
ud.lines.grpdelay = [];
ud.lines.z = [];
ud.lines.p = [];
ud.lines.zgrid = [];
ud.lines.imp = [];
ud.lines.impstem = [];
ud.lines.impc = [];
ud.lines.impstemc = [];
ud.lines.step = [];
ud.lines.stepstem = [];
ud.lines.stepc = [];
ud.lines.stepstemc = [];
% ====================================================================
% Save userdata structure
set(fig,'userdata',ud)
fignum=fig;
% ====================================================================
% now add toolbar for filter viewer
btnlist = { 'mousezoom' 'zoomout' 'help'}';
tb_callbackstr = {
'sbswitch(''yhzfvzoom'',''mousezoom'')'
'sbswitch(''yhzfvzoom'',''zoomout'')'
'sbswitch(''yhzfdview'',''help'')' };
yhzzoombar('fig',fig,'btnlist',btnlist,'callbacks',tb_callbackstr,...
'left_width',ud.resize.leftwidth);
set(fig,'resizefcn',...
yhzappstr(get(fig,'resizefcn'),'sbswitch(''fvresize'')'))
%set(fig,'windowbuttonmotionfcn',...
% ['sbswitch(''fvmotion'',' num2str(ud.toolnum) ')'])
set(fig,'HandleVisibility','callback')
yhzfvresize(1,fig) % position axes
% Do the plots
yhzfdview('plots',ud.prefs.plots)
set(fig,'visible','on')
set(0,'showhiddenhandles',save_shh)
function fl = Localframelab(framehand,labelstr,lfs,lh,varargin)
% FRAMELAB Create UIControl of style static text for frame label.
% Assumes all positions and units are in pixels.
% Inputs:
% framehand - handle of frame
% labelstr - string
% lfs - spacing between label text and left edge of frame
% lh - label height
% varargin{:} - param/value pairs for uicontrol creation
% Outputs:
% fl - frame label handle
% Copyright (c) 1988-97 by The MathWorks, Inc.
% $Revision: 1.6 $
pos = get(framehand,'position');
lpos = [pos(1)+lfs pos(2)+pos(4)-lh/2 100 lh];
l = uicontrol('style','text',...
'units','pixels',...
'string',[labelstr ' '],...
'position',lpos,varargin{:});
ex = get(l,'extent');
set(l,'position',[lpos(1:2) ex(3) lpos(4)])
set(l,'horizontalalignment','center')
if nargout > 0
fl = l;
end
% WORK NEEDS TO BE DONE:
% % ADD FILTER INFORMATION: ud.filt.{label, Fs,.......}
% % Adjust the uicontrols
% % All button's callbackStr
% Do the Plots Origianlly Line469
% % Line 462, 462
% Tool Bar Call Back String
% 464,465
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -