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

📄 modplt.m

📁 trabajos en matlab para verificar son muy buenos
💻 M
字号:
function modplt
% MODPLT Signal plotting for MODGUI.


% 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');
carrier_edt = ui(24);
duration_edt = ui(27);
ct_axes = ui(29);
ct_line = ui(30);
mag_axes = ui(34);
mag_line = ui(35:36);
meth_pop = ui(10);
am_index = ui(41);
pm_index = ui(46);
fm_index = ui(48);
ssb_pop = ui(49);
det_chk = ui(42);
tau_edt = ui(44);

%%%%%%%%%
if get(ui(5),'userdata')==1
set(f,'currentaxes',ui(29));
zoom out,zoom reset
set(f,'currentaxes',ui(34));
zoom out,zoom reset
end
%%%%%%%%%




ele_mat = get(ui(1),'userdata');
[r,c] = size(ele_mat);
% if no signal defined, get out.
if ~length(ele_mat), 
   set(ct_line,'xdata',0,'ydata',0);
   set(mag_line,'xdata',0,'ydata',0);
   return; 
end

i = sqrt(-1);

%% MESSAGE SIGNAL
f_c = str2num(get(carrier_edt,'string'));
duration = str2num(get(duration_edt,'string'));
dt=duration/500;
t_vec=(0:499)*dt; 
x_vec = zeros(size(t_vec));

for k = 1:r,
   val1 = ele_mat(k,1);
   val2 = ele_mat(k,2);
   val3 = ele_mat(k,3);
   x =  val1 * cos(2*pi*val2*t_vec + val3*pi/180);
   x_vec = x_vec + x;
end

tmin=min(t_vec);tmax=max(t_vec);
set(ct_line,'xdata',t_vec,'ydata',x_vec);
set(ct_axes,'xlim',[tmin,tmax],'ylim',[min(x_vec),max(x_vec)]);
set(ui(50),'userdata',t_vec(:));

%MODULATED SIGNAL
method = get(meth_pop,'value');
opr_tit = get(ui(34),'title');

if method==1,
   x_mod=x_vec.*cos(2*pi*f_c*t_vec);
   tit_str = 'DSB SC Modulated Signal';
elseif method==2,
k_b = str2num(get(am_index,'string'));
if ~length(k_b)
   errordlg('Value of beta not specified.','Input Error');
   return
   elseif k_b <=0
   errordlg('Beta must be positive.','Input Error');
   return;
end

   x_mod=(1+k_b*x_vec).*cos(2*pi*f_c*t_vec);
   tit_str = 'Standard AM Modulated Signal';

elseif method == 3,  %SSB
   x_i=x_vec.*cos(2*pi*f_c*t_vec);
   x_h = 0*x_i;
   for k = 1:r,
       val1 = ele_mat(k,1);
       val2 = ele_mat(k,2);
       val3 = ele_mat(k,3);
       x =  val1 * cos(2*pi*val2*t_vec + (val3-90)*pi/180);
       x_h = x_h + x;
   end
   x_q=x_h.*sin(2*pi*f_c*t_vec);
   ssb_type =get(ssb_pop,'value');
   if ssb_type == 1, %(USB)
      x_mod = x_i-x_q;
   tit_str = 'SSB Modulated Signal: Upper Sideband';

   elseif ssb_type == 2, %LSB
      x_mod = x_i+x_q;
   tit_str = 'SSB Modulated Signal: Lower Sideband';
   end


% k_p in (rad/unit) (for PM) or k_f(Hz/unit) (for FM).
elseif method == 4, %PM
k_p = str2num(get(pm_index,'string'));
if ~length(k_p)
   errordlg('Value of Kp not specified.','Input Error');
   return
   elseif k_p <=0
   errordlg('Kp must be positive.','Input Error');
   return;
end

x_mod=cos(2*pi*f_c*t_vec + k_p*x_vec);
   tit_str = 'Phase Modulated (PM) Signal';

elseif method == 5, %FM
k_f = str2num(get(fm_index,'string'));
if ~length(k_f)
   errordlg('Value of Kf not specified.','Input Error');
   return
   elseif k_f <=0
   errordlg('Kf must be positive.','Input Error');
   return;
end

x_mod=cos(2*pi*(f_c*t_vec + k_f*cumsum(x_vec)*dt));
   tit_str = 'Frequency Modulated (FM) Signal';

end

set(mag_line(1),'xdata',t_vec,'ydata',x_mod);
dmin=min(x_mod);dmax=max(x_mod);
set(mag_axes,'xlim',[tmin,tmax],'ylim',[dmin,dmax]);
set(ui(51),'userdata',[x_vec(:) x_mod(:)]);

env_det = get(det_chk,'value');

if method > 2 | env_det == 0
set(mag_line(2),'xdata',0,'ydata',0);
set(opr_tit,'string',tit_str);
return
end

tau = str2num(get(tau_edt,'string'));

if ~length(tau)
   errordlg('Value of tau not specified.','Input Error');
   set(mag_line(2),'xdata',0,'ydata',0);
   set(opr_tit,'string',tit_str);
   return
   elseif tau <=0
   errordlg('Tau must be positive.','Input Error');
   set(mag_line(2),'xdata',0,'ydata',0);
   set(opr_tit,'string',tit_str);
   return;
end

x_det(1)=x_mod(1);
for i=2:length(x_mod)
if x_det(i-1)>x_mod(i)
x_det(i)=x_det(i-1)*exp(-dt/tau);
else
x_det(i)=x_mod(i);
end
end
set(mag_line(2),'xdata',t_vec,'ydata',x_det);
dmax=max([x_mod,x_det]);dmin=min([x_mod,x_det]);
set(mag_axes,'ylim',[dmin,dmax]);
set(ui(52),'userdata',x_det(:));

if method == 1
   tit_str = 'DSB SC Modulated and Detected Signal';
else
   tit_str = 'Standard AM Modulated and Detected Signal';
end
set(opr_tit,'string',tit_str);

⌨️ 快捷键说明

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