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

📄 sb2slsc.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
  set_param(blkname,...
    'Mask Display','plot([0,0],[-.3,1.2],[-.3,2.2],[0,0],[0,1,2],[0,1,1])',...
    'Mask Type','Ramp',...
    'Mask Dialogue','At the Start time, an output is produced which ramps at the Ramp slope ratio until it saturates at the Ramp saturation.|Start time:|Ramp slope ratio:|Ramp saturation:')
  set_param(blkname,...
    'Mask Translate','st=@1;sl=@2;sa=@3;',...
    'Mask Help','RAMP Produces a ramp signal, with slope equal to the Ramp slope ratio, starts at the Start time, and saturates at the Saturation value. The dimension of the output signal is fixed.',...
    'Mask Entries',[mat2str(x0) '\/' mat2str(sl) '\/' mat2str(sa) '\/'])
elseif in(3) == 5
  %step
  x0 = fl(1:in(5))';
  mag = fl(in(5)+1:in(5)*2);
  if in(5) == 1
    set_param(blkname,'Time',num2str(x0),...
	'After',num2str(mag));
  else
    set_param(blkname,'Location',[115,466,316,675])
    for i=1:in(5)
      tp = num2str(i);
      set_param([blkname '/output' tp],...
	'Port',tp,...
	'position',[145,50*i,165,50*i+20])
      add_block('built-in/Step Fcn',[blkname,'/Step Fcn' tp])
      set_param([blkname, '/Step Fcn' tp],...
		'Time',['st(' tp ')'],...
		'After',['mag(' tp ')'],...
		'position',[50,50*i,70,50*i+20]);
      autoline(blkname,['Step Fcn' tp '/1'],['output' tp '/1']);
    end;
    set_param(blkname,'Mask Display',...
	'plot([0 0],[-0.2,1.1],[-0.2,1.1],[0 0],[.3 .3 1],[0 1 1])',...
	'Mask Type','Step Fcn',...
	'Mask Dialogue','At t=Step time, output changes from zero to Final Value.|Start time:|Final value:')
    set_param(blkname,...
	'Mask Translate','st=@1;mag=@2;',...
	'Mask Help','STEP The step Fcn block provides a signal transition between two values occuring at a specified time. The dimention of the output signal is fixed.',...
	'Mask Entries',[mat2str(x0) '\/' mat2str(mag) '\/'])    
  end;
elseif in(3) == 6
  %sine wave
  x0=fl(1:in(5))';
  mag=fl(in(5)+1:in(5)*2)';
  ph=fl(in(5)*2+1:in(5)*3)';
  frq=fl(in(5)*3+1:in(5)*4)';
  if in(5) == 1 & x0 == 0
    set_param(blkname,'amplitude',num2str(mag),...
	'frequency',num2str(frq),...
	'phase',num2str(ph));
  else
    if in(5) == 1
      delete_block(blkname);
      new_system(blkname);
      add_block('built-in/Outport',[blkname,'/output1']);
    end;  
    add_block('built-in/Clock',[blkname '/Clock'])
    set_param([blkname '/Clock'],'position',[40,50,60,70])
    for i=1:in(5)
      tp = num2str(i);
      set_param([blkname '/output' num2str(i)],...
	  'Port',tp,'position',[320,50*i,340,50*i+20])
      add_block('built-in/Fcn',[blkname,'/Fcn',tp]);
      set_param([blkname '/Fcn' tp],'Expr',...
	  ['sin(((u[1]-tm(' tp '))*frq(' tp ')*2+ph(' tp ')/180)*3.141592635)*(u[1]>=tm(' tp '))*mag(' tp ')'],...
	  'position',[205,50*i,245,50*i+20])
      autoline(blkname,'Clock/1',['Fcn' tp '/1']);
      autoline(blkname,['Fcn' tp '/1'],['output' tp '/1']);      
    end;
    set_param(blkname,'Mask Display',...
	'plot([0:20],sin([0:20]*pi/10),[0,0],[-1,1],[-1,20],[0,0])',...
	'Mask Type','Sinusoid Signal')
    temp = 'Sine Wave\nMag*sin(Freq*(Time-Start)+Phase).|Start time:|';
    temp = [temp 'Magnitude:|Phase (rads):|Frequecy (Hz):'];
    set_param(blkname,'Mask Dialogue',temp,...
	'Mask Translate','tm=@1;mag=@2;ph=@3;frq=@4;')
    set_param(blkname,'Mask Help',...
	'Multi-Output Sinusoid Signal Generator','Mask Entries',...
	[mat2str(x0) '\/' mat2str(mag) '\/' mat2str(ph/180*pi) '\/' mat2str(frq) '\/']);
  end;
elseif in(3) == 7
  % noise
  % when it is uniform distribution use signal Gen. noise in(in(17)+3) == 1
  % when normal noise use built in noise in(in(17)+3) == 2
  % when it is Omstein-Unlenbeck distribution treat it same as uniform in(in(17)+3) == 3
  seed = in(in(17)+4:in(17)+3+in(5))';
  stt= fl(1:in(5))';
  mean = fl(in(5)+1:in(5)*2)';    %minimum number for uniform
  std  = fl(in(5)*2+1:in(5)*3)';  %maximum number for uniform
  std = std .* std;
  if cod(1) ~= 1
    smpt = fl(in(5)*3+1); 
    smpt = mat2str(smpt*ones(1,length(std)));
  else
    smpt = mat2str(timer(1)*ones(1,length(std)));
  end;
  done = 0;
  if in(5) == 1
    % in the case of directly one block can be used, use one block
    % otherwise, use group
    if in(in(17)+3) == 1 & stt == 0 & std+mean == 0 & cod(1) == 1
      set_param(blkname,'Peak',num2str(std),'Peak Range',num2str(std*5),...
	'Wave','Rnd');
      done = 1;
    elseif in(in(17)+3) == 1 & stt == 0 & std == 1 & cod(1) == 1
      delete_block(blkname);
      add_block('built-in/White Noise',blkname);
      set_param(blkname, 'Seed', num2str(seed));
      done = 1;
    else
      delete_block(blkname);
      new_system(blkname);
      add_block('built-in/Outport',[blkname '/output1']);
    end;
  end;
  if ~done
    set_param(blkname,'Location',[93,402,506,727])
    add_block('built-in/Clock',[blkname '/Clock'])
    set_param([blkname '/Clock'],'position',[20,15,40,35])
    for i=1:in(5)
      tp = num2str(i);
      im1=(i-1)*100;
      % add zero hold when it is a continuous time system
      add_block('built-in/Discrete Transfer Fcn',[blkname '/Zero Order Hold' tp])
      set_param([blkname '/Zero Order Hold' tp],...
		'Sample time',['Ts(' tp ')'],...
		'position',[100,im1+61,165,im1+99])
      % add function
      add_block('built-in/Fcn',[blkname '/Fcn' tp])
      set_param([blkname '/Fcn' tp],'position',...
		[260,59+im1,325,91+im1])
      % add noise generator
      if in(in(17)+3) == 1
        % uniform distribution
        add_block('built-in/Signal Generator',[blkname '/Noise Source' tp])
	set_param([blkname '/Noise Source' tp],...
		'Peak','1.000000',...
		'Peak Range','5.000000',...
		'Wave','Rnd',...
		'position',[15,im1+63,60,im1+97])
	set_param([blkname '/Fcn' tp],'Expr',...
	  ['((u[2]+1)*(maxx(' tp ')-minn(' tp '))/2+minn(' tp '))*(u[1]>=stt(' tp ')) '])
	set_param([blkname '/Zero Order Hold' tp],...
		'Numerator','1','Denominator','1')
      else
        % normal distribution
	add_block('built-in/White Noise',[blkname '/Noise Source' tp])
	set_param([blkname '/Noise Source' tp],...
		'Seed',['seed(' tp ')'],...
		'position',[35,im1+63,55,im1+97])
	set_param([blkname '/Fcn' tp],'Expr',...
		['(u[2]+mean(' tp '))*(u[1]>=stt(' tp '))'])
	set_param([blkname '/Zero Order Hold' tp],...
		'Numerator',['[std(' tp ')]'],...
		'Denominator',['[sqrt(Ts(' tp '))]'])
      end;
      % place mux here
      add_block('built-in/Mux',[blkname '/Mux' tp])
      set_param([blkname '/Mux' tp],'inputs','2',...
		'position',[200,im1+55,230,90+im1])
      % place outport
      set_param([blkname '/output' tp],...
		'Port', tp,...
		'position',[375,65+im1,395,85+im1])
      % add lines
      add_line(blkname,[65,80+im1;90,80+im1])
      add_line(blkname,[330,75+im1;365,75+im1])
      add_line(blkname,[170,80+im1;190,80+im1])
      add_line(blkname,[235,75+im1;250,75+im1])
      add_line(blkname,[45,25;180,25;180,65+im1;190,65+im1])
    end % for
    stt = mat2str(stt);
    mean  = mat2str(mean);
    std   = mat2str(std);
    seed  = mat2str(seed);
    if in(in(17)+3) == 1
	set_param(blkname,...
	   'Mask Display','plot([1:13],r)',...
	   'Mask Type','Uniform White Noise.','Mask Dialogue',...
	   'Uniform Band-limited White Noise.|Relative Start Time:|Minmum Value:|Maximum Value:|Sample Time:')
	set_param(blkname,...
	   'Mask Translate','stt = @1; minn = @2; maxx=@3; Ts = @4; r = rand(1:12);')
	temp = 'Implemented using white noise into Zero Order Hold block. For faster simulation set sample time ';
	temp = [temp 'to highest value possible but in accordance with the fastest dynamics of system.'];
	set_param(blkname,'Mask Help',temp);
	set_param(blkname,'Mask Entries',[stt '\/' mean '\/' std '\/' smpt '\/']);
    else
	set_param(blkname,...
	   'Mask Display','plot([1:13],r)',...
	   'Mask Type','Normal White Noise.','Mask Dialogue',...
	   'Normal Band-limited White Noise.|Relative Start Time:|Noise Mean:|Standard Deviation:|Sample Time:|Seed')
	set_param(blkname,...
	   'Mask Translate','stt = @1; mean = @2; std=@3; Ts = @4; seed = @5; r = rand(1:12);')
	temp = 'Implemented using white noise into Zero Order Hold block. For faster simulation set sample time to ';
	temp = [temp 'highest value possible but in accordance with the fastest dynamics of system.'];
	set_param(blkname,'Mask Help',temp);
	set_param(blkname,'Mask Entries',...
	   [stt '\/' mean '\/' std '\/' smpt '\/' seed '\/'])
    end;
  end; % if ~done
end;

⌨️ 快捷键说明

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