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

📄 com_filt.m

📁 数字通信第四版原书的例程
💻 M
📖 第 1 页 / 共 2 页
字号:
add_block('built-in/Product',[sys,'/','Memory impulse/Product'])
set_param([sys,'/','Memory impulse/Product'],...
		'position',[155,90,180,110])

add_block('built-in/Outport',[sys,'/','Memory impulse/out_1'])
set_param([sys,'/','Memory impulse/out_1'],...
		'position',[355,130,375,150])

add_block('built-in/Constant',[sys,'/','Memory impulse/Constant'])
set_param([sys,'/','Memory impulse/Constant'],...
		'Value','x',...
		'position',[210,155,230,175])

add_block('built-in/Switch',[sys,'/','Memory impulse/Switch'])
set_param([sys,'/','Memory impulse/Switch'],...
		'Threshold','.5',...
		'position',[295,124,320,156])


%     Subsystem  ['Memory impulse/discrete',13,'Rising edge',13,'detector'].

new_system([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],'Location',[419,521,808,713])

add_block('built-in/Relational Operator',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator']],...
		'position',[135,18,165,42])

add_block('built-in/Inport',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/in_1']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/in_1']],...
		'position',[10,15,30,35])

add_block('built-in/Constant',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/one1']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/one1']],...
		'Value','thld',...
		'position',[30,135,60,155])

add_block('built-in/Relational Operator',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator2']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator2']],...
		'Operator','>',...
		'position',[265,23,295,47])

add_block('built-in/Relational Operator',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator1']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Relational',13,'Operator1']],...
		'position',[200,88,230,112])

add_block('built-in/Outport',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/out_1']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/out_1']],...
		'position',[340,25,360,45])

add_block('built-in/Unit Delay',[sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Unit Delay']])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector/Unit Delay']],...
		'Sample time','ts',...
		'position',[120,87,170,103])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[300,35;335,35])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[235,100;240,100;240,40;260,40])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[170,30;260,30])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[65,145;100,145;100,35;130,35])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[100,145;180,145;180,105;195,105])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[175,95;195,95])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[35,25;130,25])
add_line([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],[45,25;45,95;115,95])
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],...
		'Mask Display','Edge\nDetector',...
		'Mask Type','Edge Detection',...
		'Mask Dialogue','Rising edge detection:|Threshold:|Sampling time:')
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],...
		'Mask Translate','thld=@1;ts=@2;')
set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],...
		'Mask Help','When the input signal rising edge passed the given shreshold, this block outputs one, otherwise outputs zero.',...
		'Mask Entries','thr\/ts\/')


%     Finished composite block ['Memory impulse/discrete',13,'Rising edge',13,'detector'].

set_param([sys,'/',['Memory impulse/discrete',13,'Rising edge',13,'detector']],...
		'position',[65,26,120,54])

add_block('built-in/Inport',[sys,'/','Memory impulse/in_2'])
set_param([sys,'/','Memory impulse/in_2'],...
		'Port','2',...
		'position',[25,30,45,50])
add_line([sys,'/','Memory impulse'],[245,100;260,100;260,130;290,130])
add_line([sys,'/','Memory impulse'],[185,100;200,100])
add_line([sys,'/','Memory impulse'],[60,195;280,195;290,150])
add_line([sys,'/','Memory impulse'],[95,195;95,105;150,105])
add_line([sys,'/','Memory impulse'],[325,140;350,140])
add_line([sys,'/','Memory impulse'],[235,165;250,165;250,140;290,140])
add_line([sys,'/','Memory impulse'],[125,40;130,40;130,95;150,95])
add_line([sys,'/','Memory impulse'],[50,40;60,40])
set_param([sys,'/','Memory impulse'],...
		'Mask Display','plot(0,0,100,100,v,w);Sinc',...
		'Mask Type','Sinc filter')
set_param([sys,'/','Memory impulse'],...
		'Mask Dialogue','The rising edge of the second input\nsignal locks the signal value at the first inport for the period of holding time.|Holding time (sec):|Threshold for trigger pulse: ')
set_param([sys,'/','Memory impulse'],...
		'Mask Translate','ts=@1;thr=@2;x=thr>0;[v,w]=trigicon(0,25,get_param(gcb,''orientation''),2);')
set_param([sys,'/','Memory impulse'],...
		'Mask Help','When the threshold is greater than zero, this block outputs an impulse signal, which begins at the rising edge of the trigger signal from the second input port. The width of the impulse equals the holding time. The impulse holds a constant amplitude, which equals the amplitude of the first input at the rising edge of the trigger signal. When the threshold is less than or equal to zero, this block outputs the first input.')
set_param([sys,'/','Memory impulse'],...
		'Mask Entries','.01\/.2\/')


%     Finished composite block 'Memory impulse'.

set_param([sys,'/','Memory impulse'],...
		'position',[40,118,120,162])


%     Subsystem  'Hilbert transform filter'.

new_system([sys,'/','Hilbert transform filter'])
set_param([sys,'/','Hilbert transform filter'],'Location',[117,572,380,656])

add_block('built-in/Note',[sys,'/','Hilbert transform filter/Ref: Hambley: An Intro to Comm. Systems. pp82'])
set_param([sys,'/','Hilbert transform filter/Ref: Hambley: An Intro to Comm. Systems. pp82'],...
		'position',[355,290,360,295])

add_block('built-in/Outport',[sys,'/','Hilbert transform filter/out_1'])
set_param([sys,'/','Hilbert transform filter/out_1'],...
		'position',[195,20,215,40])

add_block('built-in/Inport',[sys,'/','Hilbert transform filter/in_1'])
set_param([sys,'/','Hilbert transform filter/in_1'],...
		'position',[35,20,55,40])

add_block('built-in/Filter',[sys,'/','Hilbert transform filter/Filter'])
set_param([sys,'/','Hilbert transform filter/Filter'],...
		'Numerator','num',...
		'Denominator','den',...
		'Sample time','ts',...
		'position',[95,11,150,49])
add_line([sys,'/','Hilbert transform filter'],[60,30;90,30])
add_line([sys,'/','Hilbert transform filter'],[155,30;190,30])
set_param([sys,'/','Hilbert transform filter'],...
		'Mask Display','Hilbert\nfilter',...
		'Mask Type','Hilbert transform filter')
set_param([sys,'/','Hilbert transform filter'],...
		'Mask Dialogue','Design a Hilbert transform filter and use it to filter the input signal.|Bandwidth of the input signal (Hz):|Time delay for Hilbert transform filter (sec):|Sample time (sec):')
set_param([sys,'/','Hilbert transform filter'],...
		'Mask Translate','ban=@1;dly=@2;ts=@3;if ban>1/ts, ban=1/ts-ts;end;[num,den]=hilbiir(ts,dly,ban);pi2=2*pi;pih=pi/2;')
set_param([sys,'/','Hilbert transform filter'],...
		'Mask Help','This block designs a Hilbert transform filter. The filter is used to filter the input signal. Hilbert transform filter is a non-causal filter and needs a positive time delay. The filter works with the signal in the given frequency range.')
set_param([sys,'/','Hilbert transform filter'],...
		'Mask Entries','1/ts/10\/ts*10\/ts\/')


%     Finished composite block 'Hilbert transform filter'.

set_param([sys,'/','Hilbert transform filter'],...
		'position',[40,193,120,237])


%     Subsystem  ['Raised cosine',13,'filter demo'].

new_system([sys,'/',['Raised cosine',13,'filter demo']])
set_param([sys,'/',['Raised cosine',13,'filter demo']],'Location',[175,552,335,697])
set_param([sys,'/',['Raised cosine',13,'filter demo']],...
		'Mask Display','RC filter\ndemo',...
		'Mask Dialogue','eval(''ts=.01;Fc=100/pi/2;[num,den]=butter(2,Fc*2*ts);td=.1;M=16;tstrcos'')')


%     Finished composite block ['Raised cosine',13,'filter demo'].

set_param([sys,'/',['Raised cosine',13,'filter demo']],...
		'BackGround',7,...
		'hide name',0,...
		'position',[185,43,265,87])


%     Subsystem  ['Raised cosine',13,'filter demo2'].

new_system([sys,'/',['Raised cosine',13,'filter demo2']])
set_param([sys,'/',['Raised cosine',13,'filter demo2']],'Location',[175,552,335,697])
set_param([sys,'/',['Raised cosine',13,'filter demo2']],...
		'Mask Display','Sinc filter\ndemo',...
		'Mask Dialogue','eval(''tstsinc'')')


%     Finished composite block ['Raised cosine',13,'filter demo2'].

set_param([sys,'/',['Raised cosine',13,'filter demo2']],...
		'BackGround',7,...
		'hide name',0,...
		'position',[185,118,265,162])


%     Subsystem  ['Raised cosine',13,'filter demo3'].

new_system([sys,'/',['Raised cosine',13,'filter demo3']])
set_param([sys,'/',['Raised cosine',13,'filter demo3']],'Location',[175,552,335,697])
set_param([sys,'/',['Raised cosine',13,'filter demo3']],...
		'Mask Display','Hilbert filter\ndemo',...
		'Mask Dialogue','eval(''ts=0.01;tsthilbt'')')


%     Finished composite block ['Raised cosine',13,'filter demo3'].

set_param([sys,'/',['Raised cosine',13,'filter demo3']],...
		'BackGround',7,...
		'hide name',0,...
		'position',[185,193,265,237])


%     Subsystem  'Filters'.

new_system([sys,'/','Filters'])
set_param([sys,'/','Filters'],'Location',[15,243,212,738])
set_param([sys,'/','Filters'],...
		'Mask Display','SIMULINK\nfilter\nblocks',...
		'Mask Dialogue','eval(''extrfilt;'')')


%     Finished composite block 'Filters'.

set_param([sys,'/','Filters'],...
		'position',[40,343,120,387])


%     Subsystem  'dsplib'.

new_system([sys,'/','dsplib'])
set_param([sys,'/','dsplib'],'Location',[15,243,212,738])
set_param([sys,'/','dsplib'],...
		'Mask Display','DSP\nDesign\nblocks',...
		'Mask Dialogue','eval(''if (exist(''''dsplib'''')<=0), disp(''''This block call DSPBLOCK toolbox. The toolbox is not in your path.'''');else,dsplib;end;'')')


%     Finished composite block 'dsplib'.

set_param([sys,'/','dsplib'],...
		'position',[40,418,120,462])

add_block('built-in/S-Function',[sys,'/','Complex filter'])
set_param([sys,'/','Complex filter'],...
		'function name','cmplxflt',...
		'parameters','num, den, ts',...
		'Mask Display','plot(0,0,100,100,x,y,u,v);Filter',...
		'Mask Type','Complex filter')
set_param([sys,'/','Complex filter'],...
		'Mask Dialogue','Vector expression for numerator and\ndenominator. Complex coefficients are in ascending power of 1/z.|Numerator:|Denominator:|Sample time:')
set_param([sys,'/','Complex filter'],...
		'Mask Translate','num=@1;den=@2;ts=@3;num=[real(num(:))'';imag(num(:))''];den=[real(den(:))'';imag(den(:))''];if max(abs(den(2,:))) <=0, den=den(1,:); end;if max(abs(num(2,:))) <=0, num=num(1,:); end;[u,v]=cmplxicn(1,50,get_param(gcb,''orientation''));[x,y]=cmplxicn(0,50,get_param(gcb,''orientation''));')
set_param([sys,'/','Complex filter'],...
		'Mask Help','This block takes real or complex signal input and outputs complex signal. The numerator can be a real or a complex vector with the coeficient ordered in ascending power of 1/z. Same for the denominator.')
set_param([sys,'/','Complex filter'],...
		'Mask Entries','[1 2 3 4]+sqrt(-1)*[5 6 7 8]\/[8 7 6 5]+sqrt(-1)*[4 3 2 1]\/.1\/',...
		'position',[45,268,120,312])


%     Subsystem  ['Raised cosine',13,'filter demo4'].

new_system([sys,'/',['Raised cosine',13,'filter demo4']])
set_param([sys,'/',['Raised cosine',13,'filter demo4']],'Location',[175,552,335,697])
set_param([sys,'/',['Raised cosine',13,'filter demo4']],...
		'Mask Display','Complex filter\ndemo',...
		'Mask Dialogue','eval(''tcmplxfl'')')


%     Finished composite block ['Raised cosine',13,'filter demo4'].

set_param([sys,'/',['Raised cosine',13,'filter demo4']],...
		'BackGround',7,...
		'hide name',0,...
		'position',[185,268,265,312])

drawnow

% Return any arguments.
if (nargin | nargout)
	% Must use feval here to access system in memory
	if (nargin > 3)
		if (flag == 0)
			eval(['[ret,x0,str,ts,xts]=',sys,'(t,x,u,flag);'])
		else
			eval(['ret =', sys,'(t,x,u,flag);'])
		end
	else
		[ret,x0,str,ts,xts] = feval(sys);
	end
else
	drawnow % Flash up the model and execute load callback
end

⌨️ 快捷键说明

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