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

📄 dfftedt.m

📁 ADSP TOOLBOX: Version 2.0 and gui m-files
💻 M
字号:
function dfftedt(mode,cur_txt)
% DFFTEDT Support file for DFFTGUI


% 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


% Author: Craig Borghesani <cborg@terasoft.com>

f = gcf;
ui = get(f,'userdata');
edts = ui(15:3:21);
%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);

font_size = get(f,'defaulttextfontsize');

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 = num2str(ele_vec(1),2);
      ele_str2 = num2str(ele_vec(2),2);
      ele_str3 = num2str(ele_vec(3),2);

      if ele_vec(1) < 0, ele_str1 = ['(',ele_str1,')']; end
      if ele_vec(2) < 0, ele_str2 = ['(',ele_str2,')']; end
      if ele_vec(3) >= 0, ele_str3 = ['+',ele_str3]; end

      txt_str = [ele_str1,'*cos(2*pi*',ele_str2,'*t  ',ele_str3,' deg)'];

      if any(mode == [1,3]),
          clr='k';

         if k ~= 1,
            txt1 = text(0.05,top,'+','color',clr,...
                  '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,...
               'fontweight','bold','verti','top',...
               'clipping','on','userdata',[k,txt1],...
               'buttondownfcn','dfftedt(5)');

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

      else

         set(cur_txt,'string',txt_str);
         txt_ext = get(cur_txt,'extent');
         if txt_ext(3) > 0.94, set(cur_txt,'fontsize',font_size-2);
         else set(cur_txt,'fontsize',font_size); end

      end

   end

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

   if any(mode == [1,3]),
      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);
      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');

   colour=get(cur_obj,'color');
   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(6),'enable','on');
   set(ui(7),'enable','off');
   set(edts,'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','b');
   ele_loc = data(1);
   set(ui(14),'userdata',ele_loc);
   set(ui(3),'userdata',cur_obj);
   set(ui(7),'enable','on');

   set(ui(6),'enable','off');
   set(stat_bar,'string','To edit, enter new values.  Press Del to Delete.');


   for k = 1:3,
      set(edts(k),'string',num2str(ele_mat(ele_loc,k)));
      edts_val = ele_mat(ele_loc,k);
   end
   set(edts,'callback','dfftedt(6)');

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

   if length(ele_loc) | mode == 11,
      if any(mode == [10,11]), % slider usage

         if mode == 11, return; end

      else % edit usage
         edt = gco;
         edt_val = str2num(get(edt,'string'));
         if ~length(edt_val),
            errordlg('You must enter a VALID number.','Input Error');
            return;
         end
      end

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

      val1 = str2num(get(edts(1),'string'));
      val2 = str2num(get(edts(2),'string'));
      val3 = str2num(get(edts(3),'string'));

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

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

      set(ui(1),'userdata',ele_mat);
      dfftplt;
      dfftedt(2,cur_obj);
   end

elseif mode == 7, % deleting an element
   set(ui(6),'enable','on');
   set(ui(7),'enable','off');
   set(edts,'callback','');

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

   set(stat_bar,'string','Deleting selected signal...');
   dfftplt;
   dfftedt(3);
   set(stat_bar,'string','Signal deleted.  Press Add to Undo.');

end

⌨️ 快捷键说明

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