function []=bmod(action);
%
% BBI 2000
global x y Kmod Kbase fs fb fc fc1 fc2 rd Kmd B w CNR Kch msg b a...
H442 T eta yr yn y0 k H1 H74 H92 Kerror Kecc H101 H112 H122 NN KK
if nargin<1;action='initialized';end;
if strcmp(action,'initialized');
figure('Num','off','Units','pix','pos',[5 29 792 530],'color',[1 1 1]);
uicontrol('Style','Frame','Units','Normal','Position',[.82 0 .2 1],'Back',[.8 .8 .8]);
H1=uicontrol('Style','Popup','Units','Normal','Position',[.82 .93 .15 .05],'String',str2mat('BPSK',...
'FSK','ASK','QPSK','QDPSK','16QAM'),...
'Back',[1 1 1],'Callback','bmod method;');
H2=uicontrol('Style','Popup','Units','Normal','Position',[.84 .86 .15 .05],'String',str2mat('Baseband Shaping',...
'Baseband'),'back',[1 1 1],'Callback','bmod base;');
H3=uicontrol('Style','Popup','Units','Normal','Position',[.84 .79 .15 .05],'String',str2mat('Ref digit=0',...
'Ref digit=1'),'back',[1 1 1],'Call','bomd refd;');
H411=uicontrol('Style','Text','Units','Normal','Position',[.822 .725 .09 .04],'String','B(MHz):','back',[.8 .8 .8]);
H422=uicontrol('Style','Edit','Units','Normal','Position',[.91 .73 .08 .04],'Back',[1 1 1],'String','1.5','Call','bmod bandwidth;');
H41=uicontrol('Style','Text','Units','Normal','Position',[.822 .645 .09 .04],'String','Rb(Mb/s):','Back',[.8 .8 .8]);
H42=uicontrol('Style','Edit','Units','Normal','Position',[.91 .65 .08 .04],'Back',[1 1 1],'String','1','Call','bmod fd;');
H51=uicontrol('Style','Text','Units','Normal','Position',[.822 .575 .09 .04],'String','fc(MHz):','Back',[.8 .8 .8]);
H52=uicontrol('Style','Edit','Units','Normal','Position',[.91 .58 .08 .04],'Back',[1 1 1],'String','2','Call','bmod fc;');
H61=uicontrol('Style','Text','Units','Normal','Position',[.822 .515 .09 .04],'String','fc2(MHz):','Back',[.8 .8 .8]);
H62=uicontrol('Style','Edit','Units','Normal','Position',[.91 .52 .08 .04],'Back',[1 1 1],'String','2.5','Call','bmod fc2;');
H71=uicontrol('Style','Text','Units','Normal','Position',[.822 .445 .09 .04],'String','fc(MHz):','Back',[.8 .8 .8]);
H72=uicontrol('Style','Edit','Units','Normal','Position',[.91 .45 .08 .04],'Back',[1 1 1],'String','32','Call','bmod fs;');
H75=uicontrol('Style','Checkbox','Units','Normal','Pos',[.825 .4 .168 .04],'String','Cimmunication Channel',...
'value',1,'Back',[.8 .8 .8],'Call','bmod channel;');
H73=uicontrol('Style','Text','Units','Normal','Position',[.822 .345 .09 .04],'String','C/N(dB):','Back',[.8 .8 .8]);
H74=uicontrol('Style','Edit','Units','Normal','Position',[.91 .35 .08 .04],'Back',[1 1 1],'String','5','Call','bmod CNR;');
H101=uicontrol('Style','Popup','Units','Normal','Position',[.825 .28 .18 .05],'String',str2mat('No Eerror Control Coding',...
'Reed-Solomon','Hamming','BCH'),'Back',[1 1 1],'Callback','bmod ECC;');
H111=uicontrol('Style','Text','Units','Normal','Position',[.822 .225 .09 .04],'String','C/N(dB):','Back',[.8 .8 .8]);
H112=uicontrol('Style','Edit','Units','Normal','Position',[.91 .23 .08 .04],'Back',[1 1 1],'String','63','Call','bmod nn;');
H121=uicontrol('Style','Text','Units','Normal','Position',[.822 .165 .09 .04],'String','k:','Back',[.8 .8 .8]);
H122=uicontrol('Style','Edit','Units','Normal','Position',[.91 .17 .08 .04],'Back',[1 1 1],'String','47','Call','bmod kk;');
H8=uicontrol('Style','Push','Units','Normal','Position',[.84 .11 .15 .04],'String','MOD/DEMOD','Call','bmod demod;');
H91=uicontrol('Style','Text','Units','Normal','Position',[.84 .06 .15 .04],'String','Message','Back',[.8 .8 .8]);
H92=uicontrol('Style','Edit','Units','Normal','Position',[.822 .03 .178 .04],'Back',[1 1 .2],'String','CHN','Call','bmod message;');
%----------------------------------------------------------------------
Kmod=1;Kbase=2;fs=32;fb=1;fc=2;rd=0;fc2=2.5;
Kmd=1;B=1.5*fb;CNR=5;Kch=1;msg='CHN';eta=fb/B;
T=[2 2 2 2 1 1 .5;1.5 1.5 1.5 1.5 .75 .75 .375];
w=[fc-.5*B fc+.5*B]/(fs/2);Kerror=0;Kecc=1;NN=63;KK=47;
elseif strcmp(action,'method');
Kmod=get(gco,'value');Kmd=1;
if Kmod==3;
w=(fc+fc2)/2;B=(fc2-fc)+T(Kbase)*fb;
w=[w-.5*B w+.5*B]/(fs/2);
else;
B=T(Kbase,Kmod)*fb;w=[fc-.5*B fc+.5*B]/(fs/2);
end;set(H422,'string',num2str(B));
elseif strcmp(action,'base');
Kbase=get(gco,'value');Kbase=3-Kbase;Kmd=1;
if Kmod==3;
w=(fc+fc2)/2;B=(fc2-fc)+T(Kbase)*fb;
w=[w-.5*B w+.5*B]/(fs/2);
else;
B=T(Kbase,Kmod)*fb;w=[fc-.5*B fc+.5*B]/(fs/2);
end;set(H422,'string',num2str(B));
elseif strcmp(action,'refd');
K=get(gco,'value');rd=K-1;Kmd=1;
elseif strcmp(action,'bandwidth');
B=get(gco,'string');B=str2num(B);Kmd=1;
if Kmod==3;w=[w-.5*B w+.5*B]/(fs/2);
else;w=[fc-.5*B fc+.5*B]/(fs/2);
end;
elseif strcmp(action,'fb');
fb=get(gco,'string');fb=str2num(fb);Kmd=1;
elseif strcmp(action,'fc');
fc=get(gco,'string');fc=str2num(fc);Kmd=1;
elseif strcmp(action,'fc2');
fc2=get(gco,'string');fc2=str2num(fc2);Kmd=1;
elseif strcmp(action,'fs');
fs=get(gco,'string');fs=str2num(fs);Kmd=1;
elseif strcmp(action,'message');
msg=get(gco,'string');x=str2num(msg);Kmd=1;
elseif strcmp(action,'demod');
Kmd=-Kmd;
elseif strcmp(action,'CNR');
K=get(gco,'string');CNR=str2num(K);if Kch==1;Kmd=1;end;
elseif strcmp(action,'channel');
Kch=get(gco,'value');Kmd=1;
elseif strcmp(action,'ECC');
Kecc=get(gco,'value');Kmd=1;
if Kecc==4;KK=45;set(H122,'string',num2str(KK));end;
elseif strcmp(action,'nn');
NN=get(gco,'string');NN=str2num(NN);Kmd=1;
elseif strcmp(action,'kk');
KK=get(gco,'string');KK=str2num(KK);Kmd=1;
if Kecc==1|Kecc==3;
Kecc=2;set(H101,'value',2);
end;
end;
x=str2cod(msg);n1=0;
%------------------------------------------
if Kecc==2; % Error Control Coding
x=encode(x,NN,KK,'rs')';
elseif Kecc==3;
m=log(NN+1)/log(2);KK=NN-m;
x=encode(x,NN,KK,'hamming')';set(H122,'string',num2str(KK));
elseif Kecc==4;
x=encode(x,NN,KK,'bch')';
end;n1=rem(length(x),8);
if n1>0;x=[x zeros(1,8-n1)];end;
%------------------------------------------
if Kmd==1&Kerror==0; %Modulate
if Kmod<=2;
y=bpsk(x,Kmod,Kbase,fs,fb,fc,rd);
elseif Kmod==3;
y=fsk(x,Kbase,fs,fb,fc,fc2);
elseif Kmod==4;
y=ask(x,Kbase,fs,fb,fc);
elseif Kmod==5|Kmod==6;
y=qpsk(x,Kmod,Kbase,fs,fb,fc);
elseif Kmod==7;
y=qam(x,Kbase,fs,fb,fc);
end;y0=y;yr=y;eta=fb/B;N=length(y);k=1;
if w(1)<eps;w(1)=eps; end; if w(2)>1;w(2)=1;end;
if Kch==1;
[b,a]=cheby1(2,.1,w);y=filtfilt(b,a,y); %Tx Bandpass Filter
yn=randn(1,N); yn1=filtfilt(b,a,yn);
k=sqrt(1e-07/(sum(yn1.*yn1)/N));
yn=k*yn; Pn=k*k*sum(yn1.*yn1);
y1=filtfilt(b,a,y); Pc=sum(y1.*y1);
k=sqrt(Pn/Pc*10^(CNR/10)); y=k*y;y=y+yn;
yr=filtfilt(b,a,y); % Rx Bandpass Filter
end;
bmod1(x,y/k,Kmod,Kbase,fs,fb,fc,rd);
bmod2(x,y,Kmod,fs,fb,fc,k*y0);
elseif Kmd==-1; %Demodulate;
if Kmod<=2; [xn,x1]=bpskdet(yr,Kmod,fs,fb,fc,rd);
elseif Kmod==3; [xn,x1]=fskdet(yr,fs,fb,fc,fc2);
elseif Kmod==4; [xn,x1]=askdet(yr,fs,fb,fc);
elseif Kmod==5|Kmod==6;[xn,x1]=qpskdet(yr,Kmod,fs,fb,fc);
elseif Kmod==7; [xn,x1]=qamdet(yr,fs.fb,fc);
end;
%---------------------------------
m2=length(x);I=find(x==xn);m1=length(I);
if n1>0;xn=xn(1:length(xn)-8+n1);end;
if Kecc==2; %Error Control Coding
xn=decode(xn,NN,KK,'rs')';
elseif Kecc==3;
xn=decode(xn,NN,KK,'hamming')';
elseif Kecc==4;
xn=decode(xn,NN,KK,'bch')';
end;
bmod3(xn,x1,Kmod,fs,fb,msg,[m1 m2]);
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
交全面的给出了好几种调制解调方案的matlab代码,又ASK,BPSK,FSK,QAM等的源代码 对通信领域的研究人员很有帮助.zip (24个子文件)
调制解调信号
bmod2.m 1KB
bmod1.m 657B
ask.m 919B
qdpskcd.m 539B
bmod3.m 998B
cod2str.m 431B
fsk.m 1KB
调制信号.m 107B
bpskdet.m 1KB
dcode.m 333B
bmod.m 8KB
two2four.m 489B
askdet.m 1KB
four2two.m 514B
qpsk.m 1KB
qamdet.m 1KB
constel.m 788B
fskdet.m 1KB
pulse.m 2KB
qpskdet.m 1KB
str2cod.m 328B
bpsk.m 2KB
qam.m 1KB
bshape.m 1KB
共 24 条
- 1
资源评论
依然风yrlf
- 粉丝: 785
- 资源: 1349
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功