📄 ctsiggen.m
字号:
function [new_y,p_range] = ctsiggen(p_range,mode)
%CTSIGGEN Support file for CTSIGGUI
% 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');
ele_mat = get(ui(1),'userdata');
axs_han = get(ui(6),'userdata');
ele_axs = get(ui(12),'userdata');
ele_sld = get(ele_axs,'userdata');
[r,c] = size(ele_mat);
i = sqrt(-1);
dn =str2num(get(ui(19),'string'));
if isempty(dn),dn=0.01;end
% obtain plotting range values
if nargin == 1,
mode = p_range;
p_str = get(ui(9),'string');
p_range = eval(['[' , p_str, ']']);
p_range = p_range(1):dn:p_range(2);
% store recent and correct string
set(get(axs_han,'title'),'userdata',p_str); % for conv & dtsys?
end
new_y = zeros(size(p_range));
for k = 1:r,
val1 = ele_mat(k,1);
val2 = ele_mat(k,2);
val3 = ele_mat(k,3);
val4 = ele_mat(k,4);
val5 = ele_mat(k,5);
val6 = ele_mat(k,6);
val7 = ele_mat(k,7);
val8 = ele_mat(k,8);
val9 = ele_mat(k,9);
if val6 == 1, % general form
y = val1*exp(-val2*p_range).* (p_range .^ val3).*cos(p_range*val4+val5);
new_y = new_y + y.*(p_range>=val7 & p_range<=val9);
elseif val6 == 2 % Matlab array
xn_str = get(val1,'userdata');
problem=0;if xn_str(1)=='W',
xn_str(1)=[];xn_st=xn_str;evalin('base',[xn_str ';'],'problem=1;')
if problem==0, xn_str=evalin('base',xn_str);
else
errordlg('MATLAB Syntax error.','Input Error');
return
end
if get(ui(10),'userdata') == 3
if ~isstr(xn_str),
errordlg([xn_st ' is not a string variable.'],'Input Error');
return
end
end
end
t = p_range;len=length(t);
if ~isstr(xn_str)
ytmp=xn_str;
else
ytmp = eval(['[',xn_str,']']);
end
if length(ytmp) ~=1
ttmp=val7:dn:val9;
if val7>t(1),i=find(t>=val7);i1=i(1);ytmp=[ zeros(1,i1-1) ytmp];
elseif t(1)>val7,i=find(ttmp>=t(1));i1=i(1);ytmp(1:i1-1)=[];
end
len2=length(ytmp);
if len2>len,ytmp=ytmp(1:len);
elseif len>len2,ytmp=[ytmp zeros(1,len-len2)];
end
else
ytmp = ytmp*ones(size(t));
end
new_y = new_y + ytmp.*(p_range>=val7 & p_range<=val9);
% new_y = new_y + ytmp;
%else
% ytmp = eval(['[',xn_str,']']);
% if length(ytmp) == 1
% ytmp = ytmp*ones(size(t));
% end
% ytmp = ytmp(:).';y=ytmp;
% new_y = new_y + y.*(p_range>=val7 & p_range<=val9);
%end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -