📄 ds_uwb200msys.mdl
字号:
Position [285, 86, 330, 119]
InputSameDT off
}
Block {
BlockType Reference
Name "Signal From\nWorkspace1"
Ports [0, 1]
Position [130, 28, 215, 62]
ShowName off
SourceBlock "dspsrcs4/Signal From\nWorkspace"
SourceType "Signal From Workspace"
X "[(1:N)*0+1]"
Ts "xtcs.Tb"
nsamps "1"
OutputAfterFinalValue "Setting to zero"
}
Block {
BlockType Reference
Name "Unipolar to\nBipolar\nConverter"
Ports [1, 1]
Position [150, 86, 230, 134]
ShowName off
SourceBlock "commutil2/Unipolar to\nBipolar\nConverter"
SourceType "Unipolar to Bipolar Converter"
M "2"
polarity "Positive"
}
Block {
BlockType Outport
Name "BiPloar"
Position [380, 98, 410, 112]
}
Block {
BlockType Outport
Name "Single"
Position [385, 153, 415, 167]
Port "2"
}
Line {
SrcBlock "Signal From\nWorkspace1"
SrcPort 1
Points [35, 0; 0, 50]
DstBlock "Product"
DstPort 1
}
Line {
SrcBlock "Product"
SrcPort 1
DstBlock "BiPloar"
DstPort 1
}
Line {
SrcBlock "Bernoulli Binary\nGenerator"
SrcPort 1
Points [15, 0]
Branch {
DstBlock "Unipolar to\nBipolar\nConverter"
DstPort 1
}
Branch {
Points [0, 50]
DstBlock "Single"
DstPort 1
}
}
Line {
SrcBlock "Unipolar to\nBipolar\nConverter"
SrcPort 1
DstBlock "Product"
DstPort 2
}
}
}
Block {
BlockType SubSystem
Name "3脉冲触发"
Ports [0, 1]
Position [235, 17, 315, 63]
ShowName off
FontSize 12
TreatAsAtomicUnit off
MaskType "UWB基本脉冲产生器"
MaskDescription "要输入的参数有:\n脉宽参数Tp=pi*tao一般设定脉冲"
"总宽度Tp*2=Tc(码片宽度)\n抽样精度参数K*Ts是和UWB信道滤波精度(时间分辨率)的整"
"倍数\nPlus.Signal输出到工作区间先进行单脉冲能量归一化/norm(Signal)\n波形触发"
"输出时又做了扩频波形能量归一化/扩频码长\n若幅度参数A定义为modulation.Amp,则仿"
"真结果为Q函数\n"
MaskPromptString "脉冲类型|波形幅度因子A,使触发波形=A*Modulation"
".Amp*Plus.Signal|高斯波形采样精度k*Ts|单脉冲持续时间"
MaskStyleString "popup(Gaus5),edit,edit,edit"
MaskTunableValueString "on,on,on,on"
MaskCallbackString "|||"
MaskEnableString "on,on,on,on"
MaskVisibilityString "on,on,on,on"
MaskToolTipString "on,on,on,on"
MaskVarAliasString ",,,"
MaskVariables "pulstype=@1;A=@2;KTs=@3;Tc=@4;"
MaskInitialization "Pn=evalin('base','Pn');\nPlus.A=A;\nPlus.t=0:KT"
"s:Tc-KTs;\n%Plus.Signal= Gmonopuls(Plus.t-Tp,1/Tp);\nsigma=0.0528;\ntsgm=(Plu"
"s.t-Tc/2)/sigma;\nPlus.Signal=(-15.*tsgm+10.*tsgm.^3-tsgm.^5).*exp(-tsgm.^2./"
"2);\nPlus.Signallen=length(Plus.Signal);\nPlus.Signal=Plus.Signal/norm(Plus.S"
"ignal);\nfor i=1:length(Pn.Code)\n Plus.PnWave(((i-1)*length(Plus.Signal)+"
"1):(i*length(Plus.Signal)))=Plus.Signal*Pn.Code(i);\nend\nPlus.PnWave=Plus.Pn"
"Wave/sqrt(length(Pn.Code));\nassignin('base', 'Plus', Plus);\n"
MaskDisplay "disp('UWB\\n脉冲产生器');"
MaskIconFrame on
MaskIconOpaque on
MaskIconRotate "none"
MaskIconUnits "autoscale"
MaskValueString "Gaus5|1|xtcs.Ts|xtcs.Tc"
System {
Name "3脉冲触发"
Location [176, 323, 988, 572]
Open off
ModelBrowserVisibility on
ModelBrowserWidth 200
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "A4"
PaperUnits "centimeters"
ZoomFactor "100"
Block {
BlockType Gain
Name "Gain1"
Position [335, 125, 370, 155]
Gain "A"
}
Block {
BlockType Reference
Name "Signal From\nWorkspace"
Ports [0, 1]
Position [165, 121, 270, 159]
SourceBlock "dspsrcs4/Signal From\nWorkspace"
SourceType "Signal From Workspace"
X "Plus.PnWave"
Ts "KTs"
nsamps "1"
OutputAfterFinalValue "Cyclic repetition"
}
Block {
BlockType Outport
Name "outWave"
Position [450, 133, 480, 147]
}
Line {
SrcBlock "Gain1"
SrcPort 1
DstBlock "outWave"
DstPort 1
}
Line {
SrcBlock "Signal From\nWorkspace"
SrcPort 1
DstBlock "Gain1"
DstPort 1
}
}
}
Block {
BlockType SubSystem
Name "4数据调制"
Ports [2, 1]
Position [385, 26, 445, 84]
NamePlacement "alternate"
ShowName off
FontName "Arial"
FontSize 12
TreatAsAtomicUnit off
MaskType "数据调制方式"
MaskDescription "输入到工作区的参数有:\n1、Modulation.Cross 确"
"定判决门限的参数 BPSK:0 OOK:0.5\n二元信号检测错误只有WAGN时系统的误码率: \n"
" Q{ sqrt [Amp^2 *0.5*(1+k)* 0.5*(1-rou) * 1/sigma] }\n2、Modulation.Amp "
" 若归一化触发发送波形的幅度为Amp且:\n Amp^2 *0.5*(1+k)* 0.5*(1-rou)=1"
",此时只经过WAGN信道,则误码仪输出为Q函数Q(SNR),其中rou取值BPSK:-1;OOK:0,k的"
"取值BPSK:1;OOk:0;其中SNR为WGAN信道中的信噪比参数SNR\n理解相同的误码性能BPSK"
"平均功率是OOK方式的1/2\n"
MaskPromptString "数据调制方式method"
MaskStyleString "popup(OOK|BPSK)"
MaskTunableValueString "on"
MaskEnableString "on"
MaskVisibilityString "on"
MaskToolTipString "on"
MaskVariables "method=@1;"
MaskInitialization "if method==1\n Modulation.Cross=.5;%判决"
"门限参数\n Modulation.A=2;\nelse\n Modulation.Cross=0;\n Mod"
"ulation.A=1;\nend\nassignin('base','Modulation',Modulation);"
MaskDisplay "disp( '数据调制\\n方式选择')"
MaskIconFrame on
MaskIconOpaque on
MaskIconRotate "none"
MaskIconUnits "autoscale"
MaskValueString "BPSK"
System {
Name "4数据调制"
Location [202, 82, 1014, 743]
Open off
ModelBrowserVisibility on
ModelBrowserWidth 113
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "A4"
PaperUnits "centimeters"
ZoomFactor "100"
Block {
BlockType Inport
Name "In1"
Position [20, 63, 50, 77]
}
Block {
BlockType Inport
Name "In3"
Position [20, 213, 50, 227]
Port "2"
}
Block {
BlockType Constant
Name "Constant"
Position [80, 131, 120, 169]
ShowName off
Value "method"
}
Block {
BlockType Gain
Name "Gain"
Position [510, 135, 540, 165]
Gain "Modulation.A"
}
Block {
BlockType Ground
Name "Ground1"
Position [330, 255, 350, 275]
Orientation "up"
NamePlacement "alternate"
ShowName off
}
Block {
BlockType Product
Name "Product"
Ports [2, 1]
Position [320, 61, 365, 94]
InputSameDT off
}
Block {
BlockType Switch
Name "Switch1"
Position [450, 135, 480, 165]
Criteria "u2 > Threshold"
Threshold "1.5"
InputSameDT off
}
Block {
BlockType Switch
Name "Switch2"
Position [385, 205, 415, 235]
Criteria "u2 > Threshold"
InputSameDT off
}
Block {
BlockType Outport
Name "Out1"
Position [565, 143, 595, 157]
}
Line {
SrcBlock "In3"
SrcPort 1
Points [150, 0]
Branch {
DstBlock "Switch2"
DstPort 2
}
Branch {
Points [0, -135]
DstBlock "Product"
DstPort 2
}
}
Line {
SrcBlock "Constant"
SrcPort 1
DstBlock "Switch1"
DstPort 2
}
Line {
SrcBlock "Switch2"
SrcPort 1
Points [0, -60]
DstBlock "Switch1"
DstPort 3
}
Line {
SrcBlock "Ground1"
SrcPort 1
Points [0, -20]
DstBlock "Switch2"
DstPort 3
}
Line {
SrcBlock "Gain"
SrcPort 1
DstBlock "Out1"
DstPort 1
}
Line {
SrcBlock "In1"
SrcPort 1
Points [195, 0]
Branch {
Points [0, 140]
DstBlock "Switch2"
DstPort 1
}
Branch {
DstBlock "Product"
DstPort 1
}
}
Line {
SrcBlock "Switch1"
SrcPort 1
DstBlock "Gain"
DstPort 1
}
Line {
SrcBlock "Product"
SrcPort 1
Points [50, 0; 0, 60]
DstBlock "Switch1"
DstPort 1
}
}
}
Block {
BlockType SubSystem
Name "5UWB信道"
Ports [1, 1]
Position [495, 140, 555, 190]
Orientation "down"
NamePlacement "alternate"
ShowName off
Priority "2"
AncestorBlock "UWBlib/UWB Channel"
FontSize 12
TreatAsAtomicUnit off
MaskType "UWB Channel"
MaskDescription " IEEE 802.15.3a channel model. \n此处噪声输出"
"是相对于信号能量是1的情况,即\nSNR=10*log10(1/sigma),发送波形幅度为Modulatoin"
".Amp时,对应的误码率为\nQ{sqrt [1*1/sigma] }=Q{sqrt(dbinv(SNR))\n故发送波形幅"
"度为A*Modulatoin.Amp时,对应误码率为 Q{sqrt [A^2*1*1/sigma] }=Q{sqrt(dbinv[20"
"*log10(K)+0+SNR)])}\n即这里的参数设置成SNR=SNR'-20*log10(Plus.A)时,对应误码"
"仪的输出是Q(SNR'),如SNR'=1.2753,误码仪输出Q(sqrt(dbinv(SNR')))=0.1234,SNR'=7"
".3335,输出为0.01\n理解为噪声增大了相同的功率,误码率不变\n"
MaskPromptString "Channel model:|Channel index (1 to 100):|WAGN|"
"归一化白噪声信噪比|时变信道仿真"
MaskStyleString "popup(CM1|CM2|CM3|CM4|IdeaChan),edit,checkbox,e"
"dit,checkbox"
MaskTunableValueString "on,on,on,on,on"
MaskCallbackString "||||"
MaskEnableString "on,on,on,on,on"
MaskVisibilityString "on,on,on,on,on"
MaskToolTipString "on,on,on,on,on"
MaskVarAliasString ",,,,"
MaskVariables "m=@1;ch_idx=@2;WAGN=@3;SNR=@4;Timevariability=@"
"5;"
MaskInitialization "Plus=evalin('base','Plus');\nxtcs=evalin('base'"
",'xtcs');\n%%load b.mat;%(信道估计测试码如:Bonulliseed=24680长度为512)\n%load"
" bpn.mat;\n%b=bpn;\nb=2*randint(512,1)-1;\nChannel.WAGN=WAGN;\nChannel.SNR=SN"
"R;\n\nif m~=5\n%读入cm_x信道文件\nload(strcat('hNcm',char(m+48),'_imr'));\n%"
"设定第一簇的到达时间为0(理解这里并不是假定第一能量多径时延为0)\ni=1:length(id"
"x); h(idx(i)-min(idx)+1)=hK(i);\nChannel.h = h';\n%function ChanEstimation"
"=(b,h)\n%按64/5ns过抽样精度进行信道估计,输入参数b是测试PN序列、列向量\n%参数p"
"是Tb的抽样精度p=64,测试Pn码长度PnLen=512,Taps是RAKE捕获的多径数,均衡器抽头数="
"2*2+1=5\nE.PnLen=length(b);\nE.p=64;\n%E.Taps=10;\n%E.eq=5;\nE.Taps=xtcs.Taps"
";\nE.eq=xtcs.Equas;\n%数据调制,输出TxWave\nfor i=1:E.PnLen;\nTxWave(((i-1)*E"
".p+1):(i*E.p))=Plus.PnWave*b(i);\nend\n%TxWave经UWB信道多径信道、WAGN高斯信道"
",输出r\nr=conv(TxWave,Channel.h);\nif Channel.WAGN==1\nsigma=sqrt(10^(-0.1*C"
"hannel.SNR));\nr=r+normrnd(0,sigma,1,length(r));\nend;\n%根据r求解能量响应y\n"
"y=conv(r,fliplr(Plus.PnWave));\n%信道估计的时间为(Mlen-512)*5ns即(Mlen-512)*6"
"4个响应值\n%估值响应矩阵H为k*p矩阵,输出的是单个脉冲的能量响应估值rh;\nMlen=fl"
"oor(length(y)/E.p);\nk=Mlen-E.PnLen;\n%y写成Mlen*p的矩阵Y形式\nfor i=1:Mlen;"
"\nfor j=1:E.p\n Y(i,j)=y((i-1)*E.p+j);\nend\nend\n%将测试码写成矩阵的形式M"
"len*k的形式\nb((E.PnLen+1):Mlen)=0;\nfor i=1:k;\nfor j=i:Mlen\n B(i,j)=b(j"
"-i+1);\nend\nend\nb((E.PnLen+1):end)=[];\n%得到k*p能量响应矩阵H,求出其向量形"
"式\n%H=inv(B*B')*(B*Y)/E.PnLen;\nH=B*Y/E.PnLen;\nfor i=1:k\nfor j=1:E.p\n "
" rh((i-1)*E.p+j,1)=H(i,j);\nend\nend\n%找到响应中的各极值点,输出为顺序的时间"
"索引SigPath\n%(理解在过采样精度太高时滤波器输出rh也有一定连续性,不取极值点的"
"结果可能多径捕获在同一径的连续采样点上)\n%我们需要适中的采样精度,这需要从相"
"关器的输出结果在连续抽样点的连续情况来观察,没有必要连续但又不能丢掉信息\n% %"
"对所在极值点的能量响应幅度值排序,取Taps=10个最大值对应的时间\nabsrh=abs(rh);"
"\n%absrh=rh;%这句话是只捕获正的多径\nk=1;\nfor i=length(Plus.PnWave):length(r"
"h)-1\n if (absrh(i)>absrh(i-1))&&(absrh(i)>absrh(i+1))\n SigPath(k)=i;"
"\n k=k+1;\n end \nend\nSigAmp=rh(SigPath)';\n[sort_tmp,sort_ix]"
" = sort(abs(SigAmp)); % sort in ascending time order\nSigPath = SigPath(sor"
"t_ix((end-E.Taps+1):end));\n%捕获的多径按到达时间排序\n[sort_tmp,sort_ix] = s"
"ort(SigPath); % sort in ascending time order\nSigPath = sort_tmp;\nSigAmp=r"
"h(SigPath);\n%利用y和最大参量点索引SigPath,估计RAKE各径权重,输出结果为CoffMMS"
"E\n%并利用估计的权重计算出多径合成的估值(序列码的RAKE值输出),输出为bRakeMMSE"
"和bRakeMR\nfor i=1:E.PnLen;\n for j=1:E.Taps\n Y1(i,j)=y((i-1)*E.p+Sig"
"Path(j));\n end\nend\nCoffMMSE=inv(Y1'*Y1)*(Y1'*b);\n%求解反转扩波形长度为"
"E.p的延时相关序列输出为flipcorr\nhFlipCorr=conv(Plus.PnWave,fliplr(Plus.PnWav"
"e));\ni=1:E.p;\nFlipCorr(i)=hFlipCorr(E.p-i+1);\n%求解捕获多径之间的噪声相关"
"矩阵FlipR\nfor i=1:E.Taps\n for j=i:E.Taps\n k=abs(SigPath(j)-SigPa"
"th(i))+1; \n if k<=E.p\n FlipR(i,j)=FlipCorr(k);\n Fl"
"ipR(j,i)=FlipR(i,j);\n end\n end\nend\n%求解CoffWSMR\nCoffWSMR=inv("
"SigAmp'*inv(FlipR)*SigAmp)*SigAmp'*inv(FlipR);\nCoffWSMR=CoffWSMR';\n%求解Cof"
"fEG\nCoffEG=(-(SigAmp<0)+(SigAmp>0));\n%%Rake输出\nbRakeEG=Y1*CoffEG;\nbRakeM"
"R=Y1*SigAmp;%RAKE_MR输出\nbRakeMMSE=Y1*CoffMMSE;%RAKE_MMSE输出\nbRakeWSMR=Y1*"
"CoffWSMR;\n%利用估值的Zb与实际码元的衰减误差来确定均衡系数输出为EquaCoffMMSE"
"和EquaCoffMR\n%并利用估值计算均衡器输出bEquaMMSE和bEquaMR\nZbEG=[zeros(floor("
"E.eq/2),1);bRakeEG;zeros(floor(E.eq/2),1)];\nZbMR=[zeros(floor(E.eq/2),1);bRa"
"keMR;zeros(floor(E.eq/2),1)];\nZbMMSE=[zeros(floor(E.eq/2),1);bRakeMMSE;zeros"
"(floor(E.eq/2),1)];\nZbWSMR=[zeros(floor(E.eq/2),1);bRakeWSMR;zeros(floor(E.e"
"q/2),1)];\nfor i=1:E.PnLen\n for j=1:E.eq\n ZEG(i,j)=ZbEG(i+j-1);\n ZM"
"R(i,j)=ZbMR(i+j-1); \n ZMMSE(i,j)=ZbMMSE(i+j-1);\n ZWSMR(i,j)=ZbWS"
"MR(i+j-1);\n end\nend\nEquaCoffEG=inv(ZEG'*ZEG)*(ZEG'*b);\nEquaCoffMR=inv(Z"
"MR'*ZMR)*(ZMR'*b);\nEquaCoffMMSE=inv(ZMMSE'*ZMMSE)*(ZMMSE'*b);\nEquaCoffWSMR="
"inv(ZWSMR'*ZWSMR)*(ZWSMR'*b);\n\n%结果输出ChanEsti结构\nChannel.SigPath=SigPa"
"th;\nChannel.CoffEG=CoffEG;\nChannel.CoffMR=SigAmp;\nChannel.CoffMMSE=CoffMMS"
"E;\nChannel.CoffWSMR=CoffWSMR;\nChannel.EquaCoffEG=EquaCoffEG;\nChannel.EquaC"
"offMR=EquaCoffMR;\nChannel.EquaCoffMMSE=EquaCoffMMSE;\nChannel.EquaCoffWSMR=E"
"quaCoffWSMR;\nChannel.SNR=SNR-10*log10(mean(Channel.CoffMR.^2));\nend\n\nif m"
"==5\n Channel.h=1;\n Channel.SigPath=(1:10)*0+length(Plus.PnWav"
"e);\n Channel.CoffEG=(1:10)*0+1;\n Channel.CoffMR=(1:10)*0+1;\n"
" Channel.EquaCoffEG=[0,0,1,0,0];\n Channel.SNR=SNR;\nend\n\n%10*log"
"10(norm(Channel.CoffMR)^2/xtcs.Taps);\nassignin('base','Channel',Channel);\n"
MaskDisplay "disp('UWB\\nChannel');"
MaskIconFrame on
MaskIconOpaque on
MaskIconRotate "none"
MaskIconUnits "autoscale"
MaskValueString "CM1|1|on|7.3335|off"
System {
Name "5UWB信道"
Location [80, 82, 892, 743]
Open off
ModelBrowserVisibility on
ModelBrowserWidth 200
ScreenColor "white"
PaperOrientation "landscape"
PaperPositionMode "auto"
PaperType "A4"
PaperUnits "centimeters"
ZoomFactor "100"
Block {
BlockType Inport
Name "In1"
Position [45, 143, 75, 157]
}
Block {
BlockType Reference
Name "AWGN\nChannel"
Ports [2, 1]
Position [345, 142, 405, 178]
ShowName off
SourceBlock "commchan2/AWGN\nChannel"
SourceType "AWGN Channel"
seed "74867"
noiseMode "Variance from port"
EsNodB "1"
SNRdB "snr"
Ps "1"
Tsym "3.125e-7/990"
variance "1"
}
Block {
BlockType Constant
Name "Constant"
Position [170, 266, 210, 304]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -