📄 pzpvar.m
字号:
function [val1,val2] = pzpvar(mode)
%PZPVAR Support Function for dfdpzp
% 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
if mode == 0,
f = gcf;
else
f2 = gcf;
f = get(f2,'userdata');
end
btn = get(f,'userdata');
ui_han = get(btn(4),'userdata');
if mode==0, % Setup
figure('numbertitle','off','menubar','none','name','To Workspace',...
'pos',[30,50,200,90],'color',[0.5,0.5,0.5],'resize','off',...
'userdata',f);
% Variable Input Fields
uicontrol('style','text','string','Variable Names',...
'pos',[25,65,150,15],'horizontalalignment','center',...
'backgroundcolor',[0,0.5020,0]);
uicontrol('style','text','string','Num:',...
'pos',[0,40,40,15],'horizontalalignment','right');
ui_han(1) = uicontrol('style','edit','pos',[40,40,55,17],'backgroundcolor','w',...
'callback','pzpvar(1)');
uicontrol('style','text','string','Den:',...
'pos',[95,40,40,15],'horizontalalignment','right');
ui_han(2) = uicontrol('style','edit','pos',[135,40,55,17],'backgroundcolor','w',...
'callback','pzpvar(1)');
ui_han(3) = uicontrol('style','push','pos',[27,10,60,20],'string','OK');
uicontrol('style','push','pos',[114,10,60,20],'string','Cancel',...
'callback','pzpvar(3)');
set(btn(4),'userdata',ui_han);
elseif mode==1, % edit fields
% build output and input strings
output_str = [];
for k = 1:2,
var_str = get(ui_han(k),'string');
if length(var_str),
output_str = [output_str,var_str,','];
end
end
% remove extra comma
output_str(length(output_str))=[];
% setup callback to pass desired variables to workspace
callback_str = ['[',output_str,']=pzpvar(2);'];
set(ui_han(3),'callback',callback_str);
elseif mode==2, % OK
all_poles = get(btn(1),'userdata');
all_zeros = get(btn(2),'userdata');
if isempty(all_zeros),
var1 = 1;
else
zer = [];
for k=1:length(all_zeros),
xdata = get(all_zeros(k),'xdata');
ydata = get(all_zeros(k),'ydata');
zeros_loc = xdata + ydata*i;
zer = [zeros_loc.';zer];
end
var1 = real(poly(zer.'));
end
if isempty(all_poles),
var2 = 1;
else
pol = [];
for k=1:length(all_poles),
xdata = get(all_poles(k),'xdata');
ydata = get(all_poles(k),'ydata');
poles_loc = xdata + ydata*i;
pol = [poles_loc.';pol];
end
var2 = real(poly(pol.'));
end
ct=1;
for k = 1:2,
eval(['val',int2str(ct),'=var',int2str(k),';']);
ct=ct+1;
end
close(f2);
elseif mode==3, % Cancel
close(f2);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -