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

📄 pzdesedt.m

📁 ADSP TOOLBOX: Version 2.0 and gui m-files
💻 M
字号:
function pzdesedt(mode,cur_txt)
%MODEDT Signal editing for MODGUI


% ADSP Toolbox: Version 2.0 
% For use with "Analog and Digital Signal Processing", 2nd Ed.
% Published by PWS Publishing Co.
%
% Ashok Ambardar, EE Dept. MTU, Houghton, MI 49931, USA
% http://www.ee.mtu/faculty/akambard.html
% e-mail: akambard@mtu.edu
% Copyright (c) 1998


f = gcf;
ui = get(f,'userdata');
edts = ui(6:2:12);
%slds = ui(16:3:22);
%stat_bar = ui(61);
ele_mat = get(ui(1),'userdata');
ele_loc = get(ui(14),'userdata');
ele_axs = ui(2);
ele_sld = get(ele_axs,'userdata');
[r,c] = size(ele_mat);

if any(mode == [1:3]), % displaying elements

   if any(mode == [1,3]),
      axes(ele_axs);
      cla;
      top = 0.8;
      range = 1:r;
   else
      ele_loc = get(ui(14),'userdata');
      range = ele_loc;
   end

   for k = range,

      ele_vec = ele_mat(k,:);
      ele_str1 = ['m=' num2str(ele_vec(2),2) ': '];
      if ele_vec(1)==1
         ele_str2 = ' Pole(s)  ';
%      if ele_vec(2)==1,
%         ele_str2 = ' Pole  ';
%         else,
%         ele_str2 = ' Poles ';
%      end
 
      else
         ele_str2 = ' Zero(s)  ';
%      if ele_vec(2)==1,
%         ele_str2 = ' Zero  ';
%         else,
%         ele_str2 = ' Zeros ';
%      end 
      end    

      ele_str3 = num2str(ele_vec(3),6);
      imag_part=ele_vec(4);
      if imag_part==0
      ele_str4 = ' + j0';
      else
      ele_str4 = [' pm j' num2str(abs(ele_vec(4)),6)];
      end
%      ele_str4 = [' pm j' num2str(abs(ele_vec(4)),6)];
      txt_str = [ele_str1,ele_str2,ele_str3,ele_str4];

      if any(mode == [1,3]),

%HIGHLIGHTING MODE
%%%%%%%%%%%%%% NEW ADDITION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%         if mode == 1 & k == r, clr = 'g'; else clr = 'k'; end
          clr='k';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


         if k ~= 1,
            txt1 = text(0.05,top,'+','color',clr,'fontsize',10,...
                  'fontweight','bold','verti','top','horiz','center',...
                  'clipping','on');
         else
            txt1 = text(0,top,' ','vis','off');
         end

         txt2 = text(0.1,top,txt_str,'color',clr,'fontsize',10,...
               'fontweight','bold','verti','top',...
               'clipping','on','userdata',[k,txt1],...
               'buttondownfcn','pzdesedt(5)');

         txt_ext = get(txt2,'extent');
         if txt_ext(3) > 0.94, set(txt2,'fontsize',8); end
         top = top - txt_ext(4);

      else
      % this code determines whether to update the operator text.  it
      % all depeneds if it was the first signal selected
         set(cur_txt,'string',txt_str);
         txt_ext = get(cur_txt,'extent');
         if txt_ext(3) > 0.94, set(cur_txt,'fontsize',8);
         else set(cur_txt,'fontsize',10); end

      end

   end

   if mode == 1,
      set(ui(14),'userdata',k);
      set(ui(3),'userdata',txt2);
   end

   if any(mode == [1,3]),
%%%%%%%%%%%%%%% NEW:   CHANGE r>5 to r>4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      if r > 4, set(ele_sld,'vis','on'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   end

elseif mode == 4, % moving element list
   val = get(ele_sld,'value');
   set(ele_axs,'ylim',[0,1]+val);

%%%%%%%%%%%%%%% NEW:   CHANGE r<=5 to r<=4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      if val == 0 & r <= 4, set(ele_sld,'vis','off'); end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

elseif mode == 5, % selecting an element
   cur_obj = gco;
   cur_par = get(cur_obj,'parent');

% NEW ADDITIONS
%elseif mode == 5, % selecting an element
%   cur_obj = gco;
%   cur_par = get(cur_obj,'parent');

%%%%%%%%%%%% NEW ADDITION  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   colour=get(cur_obj,'color');
%   if colour(2)==1; % color is [0 1 0]=green
   if colour(3)==1; % color is [0 0 1]=blue
   set(get(cur_par,'chil'),'color','k');
   data = get(cur_obj,'userdata');
   set([cur_obj,data(2)],'color','k');
   set(ui(13),'enable','on');
   set(ui(14),'enable','off');
   set(edts,'callback','');
%   set(slds,'callback','');
% set(stat_bar,'string','ADD new signal or click on a signal to edit/delete.');
   return,end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   set(get(cur_par,'chil'),'color','k');
   data = get(cur_obj,'userdata');
%   set([cur_obj,data(2)],'color','g');
   set([cur_obj,data(2)],'color','b');
   ele_loc = data(1);
   set(ui(14),'userdata',ele_loc);
   set(ui(3),'userdata',cur_obj);
   set(ui(14),'enable','on');

%%%%%%%%%%%%%% NEW  ADDITION  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   set(ui(13),'enable','off');
%   set(stat_bar,'string','To edit, enter new values.  PRESS DEL to DELETE.');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      set(edts(1),'value',ele_mat(ele_loc,1));
%      edts_val = ele_mat(ele_loc,1);
   for k = 2:4,
      set(edts(k),'string',num2str(ele_mat(ele_loc,k)));
   end
   for k = 1:4,
      edts_val = ele_mat(ele_loc,k);
   end
   set(edts,'callback','pzdesedt(6)');

elseif any(mode == [6,10,11]), % editing an element via edit or slider

   if length(ele_loc) | mode == 11,
         edt = gco;
         if edt==ui(6);
         edt_val = get(edt,'value');
         else
         edt_val = str2num(get(edt,'string'));
         end
         if ~length(edt_val) & edt ~=ui(12),
            errordlg('You must enter a VALID number.','Input Error');
            return;
         end
         if edt==ui(8)
           if rem(edt_val,1) | edt_val<1,
            errordlg('Multiplicity must be a positive integer.','Input Error');
            return;
           end
         end


      cur_obj = get(ui(3),'userdata');

      val1 = get(edts(1),'value');
      val2 = str2num(get(edts(2),'string'));
      val3 = str2num(get(edts(3),'string'));
      val4 = str2num(get(edts(4),'string'));
      if ~length(val4), val4 = 0; end

%      if ~length(val2), val2 = 0; end
%      if ~length(val3), val3 = 0; end

      ele_mat(ele_loc,:) = [val1, val2, val3, val4];

      set(ui(1),'userdata',ele_mat);
      pzdesplt;
      pzdesedt(2,cur_obj);
   end

elseif mode == 7, % deleting an element
   set(ui(13),'enable','on');
   set(ui(14),'enable','off');
   set(edts,'callback','');
%   set(slds,'callback','pzdesedt(11)');

% removing element
   ele_mat(ele_loc,:)=[];
   set(ui(1),'userdata',ele_mat);

%   set(stat_bar,'string','Deleting selected signal...');
   pzdesplt;
   pzdesedt(3);
%   set(stat_bar,'string','Signal deleted.  PRESS Add to UNDO.');

end

⌨️ 快捷键说明

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