📄 mathplt.m
字号:
function mathplt
%MATHPLT: Plotting control for MATHGUI
% 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');
math_edt = ui(3);
autoplot = ui(12);
plt_btn = ui(13);
n_val = ui(5);
% m_val = ui(11);
x_val = ui(7);
num_val = ui(27);
axs = ui(20);
%%%%%%%%
if get(ui(6),'userdata')==1
set(f,'currentaxes',ui(20));
zoom out,zoom reset
end
%%%%%%%
show = get(math_edt,'value');
num =eval(get(num_val,'string'));
if num ~= round(num) | num <= 1
errordlg('number of points must be > 1.','Input Error');
return;
end
%num=fix(num);
if show>3
n_ord = ['[',get(n_val,'string'),']'];
n=eval(n_ord);
if n ~= round(n) | n < 0
errordlg('n must be an integer >= 0.','Input Error');
return;
end
%m_ord = ['[',get(m_val,'string'),']'];
%m=eval(m_ord);
%if length(m) > 1
% errordlg('m ust be a single value.','Input Error');
% return;
%end
set(ui(16),'userdata',n);
end
range = eval(['[',get(x_val,'string'),']']);
if length(range) ~= 2,
errordlg('Plot range must be of the form min, max.','Input Error');
return;
end
if diff(range) <= 0,
errordlg('Plot max range must EXCEED plot min range.','Input Error');
return;
end
x_range = linspace(range(1),range(2),num+1);
x_range=x_range(:);
set(ui(15),'userdata',x_range);
count = 0;y=[];
if show == 1
y=si(x_range);
tit='Sine Integral';
elseif show == 2
y=sx(x_range);
tit='Fresnel Integral of First Kind';
elseif show == 3
y=cx(x_range);
tit='Fresnel Integral of Second Kind';
elseif show == 4,
for k = n
count = count+1;
y=[y chebyfun(k,x_range,1)];
end
tit=['Chebyshev Functions of order n = ' n_ord];
elseif show == 5,
for k = n
count = count+1;
y=[y chebyfun(k,x_range,2)];
end
tit=['Chebyshev Functions of Second Kind and order n = ' n_ord];
elseif show == 6,
for k = n
count = count+1;
y=[y besjn(k,x_range)];
end
% y=real(y);
tit=['Bessel Function J of order n = ' n_ord];
elseif show == 7,
for k = n
count = count+1;
y=[y besjnu(k,x_range)];
end
% y=real(y);
tit=['Spherical Bessel Function j of order n = ' n_ord];
end
axes(axs);
plot(x_range,y);
set(get(axs,'title'),'string',tit);
set(get(axs,'xlabel'),'string','Variable x');
set(axs,'xlim',[min(x_range),max(x_range)],'color','k');
set(axs,'xgrid','on','ygrid','on','ylim',[min(y(:)) max(y(:))]);
set(ui(14),'userdata',y);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -