?? ds_uwb200msys.mdl
字號:
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 [125, 17, 205, 63]
ShowName off
Priority "4"
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|gaus2),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 [240, 26, 300, 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 [20, 131, 60, 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, 95, 555, 145]
Orientation "down"
NamePlacement "alternate"
ShowName off
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 "edit,edit,checkbox,edit,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 "Temp.ChanMode|Temp.ChanIdx|on|Temp.EsNo|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"
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -