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

📄 selectservices.m

📁 It s a simulation for WCDMA Radio Networks.
💻 M
字号:
%SELECTSERVICES   SELECTSERVICES lets the user select the service types for UL coverage analysis.
%
%Inputs:
%Outputs:
%
%Authors: Achim Wacker (AWa)
%
%Revision: 5.0.0cd   Date: 17-Jul-2001
%
%needed m-files: none

function SelectServices(arg1)

if nargin == 0
   arg1 = '';
else 
   hf1 = findobj(allchild(0), 'flat', 'Tag', 'tagSelectServices');
end

switch arg1
case ''
   if (exist('previousService.mat') == 2)
      load('previousService.mat');
      ud.numServices = length(speed);
      ud.bitrate = bitrate/1000;
      ud.speed = speed;
      ud.color = color;
      ud.txMaxPower = txMaxPower;
   else
      ud.numServices = 3;
      ud.bitrate = [8 64 144];
      ud.speed = [50 3 3];
      ud.color = [1 0 0; 0 1 0; 0 0 1];
      ud.txMaxPower = [21 21 21]; %dBm
   end
   a1 = get(0, 'ScreenSize'); %[xLowerLeft yLowerLeft width height]
   a2(1) = 30;
   a2(2) = a1(4)-250-40*ud.numServices;
   a2(3) = 410;
   a2(4) = 170+40*ud.numServices;
   ud.a2 = a2;
   hf1 = dialog(...
      'Position', a2, ...
      'Name', 'Select services', ...
      'NumberTitle', 'off', ...
      'Tag', 'tagSelectServices', ...
      'Resize', 'off', ...
      'DeleteFcn', 'clear hf1;', ...
      'UserData', ud);
   InitDialog(hf1);
case 'addService'
   ud = get(hf1, 'UserData');
   if ud.numServices < 9
      ud.numServices = ud.numServices+1;
      ud.bitrate     = [ud.bitrate 8];
      ud.speed       = [ud.speed 50];
      ud.color       = [ud.color; ud.numServices*[0.1 0.1 0.1]];
      ud.txMaxPower  = [ud.txMaxPower 21]; %dBm
      set(hf1, ...
         'Position', get(hf1, 'Position')+[0 -40 0 40], ...
         'UserData', ud);
      InitDialog(hf1);
   end
case 'removeService'
   ud = get(hf1, 'UserData');
   if ud.numServices
      delete(ud.hServiceText1(ud.numServices));
      delete(ud.hServiceText2(ud.numServices));
      delete(ud.hServiceText3(ud.numServices));
      delete(ud.hServiceText4(ud.numServices));
      delete(ud.hServiceBitRate(ud.numServices));
      delete(ud.hServiceSpeed(ud.numServices));
      delete(ud.hServiceColor(ud.numServices));
      delete(ud.hServiceTxMaxPower(ud.numServices));
      ud.numServices = ud.numServices-1;
      ud.bitrate     = ud.bitrate(1:end-1);
      ud.speed       = ud.speed(1:end-1);
      ud.color       = ud.color(1:end-1, :);
      ud.txMaxPower  = ud.txMaxPower(1:end-1);
      ud.hServiceText1      = ud.hServiceText1(1:end-1);
      ud.hServiceText2      = ud.hServiceText2(1:end-1);
      ud.hServiceText3      = ud.hServiceText3(1:end-1);
      ud.hServiceText4      = ud.hServiceText4(1:end-1);
      ud.hServiceBitRate    = ud.hServiceBitRate(1:end-1);
      ud.hServiceSpeed      = ud.hServiceSpeed(1:end-1);
      ud.hServiceColor      = ud.hServiceColor(1:end-1);
      ud.hServiceTxMaxPower = ud.hServiceTxMaxPower(1:end-1);
      set(hf1, ...
         'Position', get(hf1, 'Position')+[0 +40 0 -40], ...
         'UserData', ud);
      InitDialog(hf1);
   end
case 'OK'
   ud = get(hf1, 'UserData');
   bitrate    = ud.bitrate*1000;
   speed      = ud.speed;
   color      = ud.color;
   txMaxPower = ud.txMaxPower;
   save previousService bitrate speed color txMaxPower;
   assignin('base', 'ok', 1);
   close(hf1);
case 'Cancel'
   close(hf1);
end
return



function InitDialog(hf1)

ud = get(hf1, 'UserData');
firstTime = ~isfield(ud, 'hServiceText1');
ext = ['st'; 'nd'; 'rd'; 'th'];
if (firstTime)
   ud.hFrame = uicontrol(...
      'Parent', hf1, ...
      'Style', 'frame', ...
      'Position', [10 100 390 45+40*ud.numServices]);
   ud.hFrameText = uicontrol(...
      'Parent', hf1, ...
      'Style', 'text', ...
      'String', 'Services', ...
      'Position', [15 127+40*ud.numServices 50 25]);
   ud.hHeader1 = uicontrol(...
      'Parent', hf1, ...
      'Style', 'text', ...
      'String', 'bit rate', ...
      'Position', [100 105+40*ud.numServices 40 25]);
   ud.hHeader2 = uicontrol(...
      'Parent', hf1, ...
      'Style', 'text', ...
      'String', 'speed', ...
      'Position', [175 105+40*ud.numServices 40 25]);
   ud.hHeader3 = uicontrol(...
      'Parent', hf1, ...
      'Style', 'text', ...
      'String', 'color', ...
      'Position', [330 105+40*ud.numServices 40 25]);
   ud.hHeader4 = uicontrol(...
      'Parent', hf1, ...
      'Style', 'text', ...
      'String', 'max. TX power', ...
      'Position', [235 105+40*ud.numServices 90 25]);
end
for kk = 1:ud.numServices
   ind = ud.numServices-kk;
   service(kk).textPos  = [15 110+ind*40 65 25];
   service(kk).text     = [num2str(kk) ext(kk*(kk<4)+4*(kk>=4), :) ' service:'];
   if (firstTime | length(ud.hServiceText1) < kk)
      ud.hServiceText1(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'text', ...
         'String', service(kk).text, ...
         'HorizontalAlignment', 'right', ...
         'Position', service(kk).textPos+[5 0 -5 0]);
      ud.hServiceBitRate(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'Edit', ...
         'String', num2str(ud.bitrate(kk)), ...
         'BackgroundColor', 'w', ...
         'HorizontalAlignment', 'right', ...
         'Tag', 'tagBitrate', ...
         'Value', kk, ...
         'Position', [service(kk).textPos(1)+70 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
         'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
                      'ud = get(hf1, ''UserData'');' ...
                      'ud.bitrate(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
                      'set(hf1, ''UserData'', ud);clear ud']);
      ud.hServiceText2(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'text', ...
         'String', 'kbps', ...
         'HorizontalAlignment', 'left', ...
         'Position', [service(kk).textPos(1)+120 service(kk).textPos(2) 30 service(kk).textPos(4)]);
      ud.hServiceSpeed(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'Edit', ...
         'String', num2str(ud.speed(kk)), ...
         'BackgroundColor', 'w', ...
         'HorizontalAlignment', 'right', ...
         'Tag', 'tagSpeed', ...
         'Value', kk, ...
         'Position', [service(kk).textPos(1)+150 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
         'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
                      'ud = get(hf1, ''UserData'');' ...
                      'ud.speed(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
                      'set(hf1, ''UserData'', ud);clear ud']);
      ud.hServiceText3(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'text', ...
         'String', 'km/h', ...
         'HorizontalAlignment', 'left', ...
         'Position', [service(kk).textPos(1)+200 service(kk).textPos(2) 30 service(kk).textPos(4)]);
      colorData(1, 1, 1:3) = ud.color(kk, :);
      ud.hServiceColor(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'pushbutton', ...
         'CData', repmat(colorData, [25, 25, 1]), ...
         'HorizontalAlignment', 'left', ...
         'Position', [service(kk).textPos(1)+325 service(kk).textPos(2)+5 25 25], ...
         'UserData', kk, ...
         'Tooltip', 'Click to edit color', ...
         'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
                      'ud = get(hf1, ''UserData'');' ...
                      'ud.color(get(gcbo, ''UserData''), :) = uisetcolor(ud.color(get(gcbo, ''UserData''), :), ''Select display color for sercive'');' ...
                      'colorData(1, 1, 1:3) = ud.color(get(gcbo, ''UserData''), :);' ...
                      'set(gcbo, ''CData'', repmat(colorData, [25, 25, 1]));' ...
                      'set(hf1, ''UserData'', ud);clear ud colorData']);
      ud.hServiceTxMaxPower(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'Edit', ...
         'String', num2str(ud.txMaxPower(kk)), ...
         'BackgroundColor', 'w', ...
         'HorizontalAlignment', 'right', ...
         'Tag', 'tagTxMaxPower', ...
         'Value', kk, ...
         'Position', [service(kk).textPos(1)+230 service(kk).textPos(2)+5 45 service(kk).textPos(4)], ...
         'Callback', ['hf1 = findobj(allchild(0), ''flat'', ''Tag'', ''tagSelectServices'');' ...
                      'ud = get(hf1, ''UserData'');' ...
                      'ud.txMaxPower(get(gcbo, ''Value'')) = str2num(get(gcbo, ''String''));' ...
                      'set(hf1, ''UserData'', ud);clear ud']);
      ud.hServiceText4(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'text', ...
         'String', 'dBm', ...
         'HorizontalAlignment', 'left', ...
         'Position', [service(kk).textPos(1)+280 service(kk).textPos(2) 30 service(kk).textPos(4)]);
   else
      set(ud.hServiceText1(kk),     'Position', service(kk).textPos);
      set(ud.hServiceText2(kk),     'Position', [service(kk).textPos(1)+120 service(kk).textPos(2)   30 service(kk).textPos(4)]);
      set(ud.hServiceText3(kk),     'Position', [service(kk).textPos(1)+200 service(kk).textPos(2)   30 service(kk).textPos(4)]);
      set(ud.hServiceText4(kk),     'Position', [service(kk).textPos(1)+280 service(kk).textPos(2)   30 service(kk).textPos(4)]);
      set(ud.hServiceBitRate(kk),   'Position', [service(kk).textPos(1)+70  service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
      set(ud.hServiceSpeed(kk),     'Position', [service(kk).textPos(1)+150 service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
      set(ud.hServiceColor(kk),     'Position', [service(kk).textPos(1)+325 service(kk).textPos(2)+5 25 25]);
      set(ud.hServiceTxMaxPower(kk),'Position', [service(kk).textPos(1)+230 service(kk).textPos(2)+5 45 service(kk).textPos(4)]);
   end
end

set(ud.hFrame,     'Position', [1 1 1 0].*get(ud.hFrame,     'Position')+[0 0 0 45+40*ud.numServices]);
set(ud.hFrameText, 'Position', [1 0 1 1].*get(ud.hFrameText, 'Position')+[0 127+40*ud.numServices 0 0]);
set(ud.hHeader1,   'Position', [1 0 1 1].*get(ud.hHeader1,   'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader2,   'Position', [1 0 1 1].*get(ud.hHeader2,   'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader3,   'Position', [1 0 1 1].*get(ud.hHeader3,   'Position')+[0 105+40*ud.numServices 0 0]);
set(ud.hHeader4,   'Position', [1 0 1 1].*get(ud.hHeader4,   'Position')+[0 105+40*ud.numServices 0 0]);

pushbutton.text = {'Add service', 'Remove service', 'OK', 'Cancel'};
pushbutton.position = [35 60 95 25; 180 60 95 25; 35 20 95 25; 180 20 95 25];
pushbutton.callback = {...
      'SelectServices(''addService'');', 'SelectServices(''removeService'');', ...
      'SelectServices(''OK'');', 'SelectServices(''Cancel'');'};
if (~isfield(ud, 'hPushbutton'))
   for kk = 1:4
      if kk == 1
         ud.hPushbutton = zeros(1, 4);
      end
      ud.hPushbutton(kk) = uicontrol(...
         'Parent', hf1, ...
         'Style', 'pushbutton', ...
         'String', char(pushbutton.text(kk)), ...
         'Position', pushbutton.position(kk, :), ...
         'Callback', char(pushbutton.callback(kk)));
   end
else
   for kk = 1:4
      set(ud.hPushbutton(kk), 'Position', pushbutton.position(kk, :));
   end
end

set(hf1, 'UserData', ud);
return

⌨️ 快捷键说明

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