返回首页

基于Matlab 的数字基带和频带调制系统 实现图解教程

时间:2012-06-22 14:34来源:知行网www.zhixing123.cn 编辑:麦田守望者

实现2ASK 信号的调制解调系统
3.1.2 拓展内容:
实现M_ASK 信号的调制解调系统。
3.2 实验步骤
Step1. 打开matlab 新建一个M 文件
Step2. 编写调制代码
(1)产生基带信号
(2)产生载波
(3)与载波信号相乘
Step3. 添加噪声
Step4. 带通滤波
Step5. 相干解调
(1)经过乘法器
(2)低通滤波
(3)抽样判决
4. 实验报告内容及要求
(1) 写出2ASK 信号的实验原理框图,实验结果及分析,程序源代码;
(2) 要求画出码元速率为100Hz,载波频率为1000Hz,采样率4000Hz,为信噪比为10 时,
对应框图每一点的波形及功率谱图(信息信号,已调制信号,加噪后的信号,带通滤波后的
信号,解调后的信号)并附上程序源代码。
(2)2ASK调制解调系统MATLAB源程序

%产生数字基带信号

figure('Name','数字信号调制过程中波形及其频谱','NumberTitle','off')

fc=1000;

fs=4000; ts=1/fs;

snr=10;v=100;

N=40;m=40;

bit=randint(1,m);

bits=[];sig=[];

for i=1:length(bit) %%length(m)表示信号m的长度

if bit(i)==0

bits=zeros(1,N);

else

bits=ones(1,N);

end

sig=[sig,bits];

end

[Pxx,Pxxc,f] = pmtm(sig,3.5,1024,fs,0.99);

SIG= dspdata.psd(Pxx,'Fs',fs);

t=ts:ts:ts*m*N;

s=cos(2*pi*fc*t); %载波信号

[Pxx,Pxxc,f] = pmtm(s,3.5,1024,fs,0.99);

S= dspdata.psd(Pxx,'Fs',fs);

s_ask=sig.*s; %调制信号

[Pxx,Pxxc,f] = pmtm(s_ask,3.5,1024,fs,0.99);

S_ASK = dspdata.psd(Pxx,'Fs',fs);

subplot(321);plot(sig);title('数字基带信号');axis([0 800 -0.5 1.5]);grid on;

subplot(322);plot(SIG);title('数字基带信号功率谱');

subplot(325);plot(t,s);title('载波信号波形');axis([0 0.4 -1.5 1.5]);

subplot(326);plot(S);title('载波信号功率谱');

subplot(323);plot(t,s_ask);title('调制后信号波形');axis([0 0.4 -1.5 1.5]);

subplot(324);plot(S_ASK);title('调制后信号功率谱');

 

%添加噪声

figure('Name','噪声及带通滤波','NumberTitle','off')

y = awgn(s_ask,snr);

[Pxx,Pxxc,f] = pmtm(y,3.5,1024,fs,0.99);

Y = dspdata.psd(Pxx,'Fs',fs);

a=[700,1300];

Wp=a/(fs/2);Rp=0.1; Rs=35;

Rp=0.1;Rs=35;

[b,a]=ellip(4,Rp,Rs,Wp);

q=filter(b,a,y);

[Pxx,Pxxc,f] = pmtm(q,3.5,1024,fs,0.99);

Q= dspdata.psd(Pxx,'Fs',fs);

subplot(221);plot(t,y);title('添加噪声后信号波形')

subplot(222);plot(Y);title('添加噪声后信号')

subplot(223);plot(t,q);title('带通滤波信号')

subplot(224);plot(Q);title('带通滤波信号')

 

%低通滤波及抽样判决

figure('Name','低通滤波及抽样判决','NumberTitle','off')

ask=q.*s;

Wp=300/(fs/2);%Ws=110/(fs/2);

Rp=0.1; Rs=35;

[b,a]=ellip(4,Rp,Rs,Wp);

ss_ask=filter(b,a,ask);

[Pxx,Pxxc,f] = pmtm(ss_ask,3.5,1024,fs,0.99);

SS_ASK= dspdata.psd(Pxx,'Fs',fs);

subplot(221);plot(t,ss_ask);title('低通滤波信号')

subplot(222);plot(SS_ASK);title('低通滤波信号功率谱')

 

sss=[];

for i=1:m

if ss_ask(N*(i-1)+N/2)>0.5

bits=ones(1,N);

else

bits=zeros(1,N);

end

sss=[sss,bits];

end

subplot(223);plot(sss);title('抽样判决信号');axis([0 850 -0.5 1.5]);grid on;

[Pxx,Pxxc,f] = pmtm(sss,3.5,1024,fs,0.99);

SSS= dspdata.psd(Pxx,'Fs',fs);

subplot(224);plot(SSS);title('抽样判决信号功率谱')

 

figure('Name','原信号与抽样判决信号比较图像','NumberTitle','off')

sig1=sig*1.5;

plot(sig1,':');title('原信号与抽样判决信号比较');axis([0 850 -0.5 2]);

hold on;

plot(sss);legend('原信号','判决信号');


 

基于Matlab 的数字基带和频带调制系统 实现图解教程1
基于Matlab 的数字基带和频带调制系统 实现图解教程2
 

(2)4ASK调制解调系统MATLAB源程序

figure('Name','4ASK信号调制过程中波形及其频谱','NumberTitle','off')

fc=1000;

fs=4000;ts=1/fs;

snr=10;

v=100;

N=40;

m=20;

bits=[];sig=[];s=[];

for i=1:m

bit=rand;

if bit<0.25

a(i)=0;b(i)=0;

elseif bit<0.5

a(i)=0;b(i)=1;

elseif bit<0.75

a(i)=1;b(i)=0;

else

a(i)=1;b(i)=1;

end

end

for i=1:m

if (a(i)==0) &&(b(i)==0)

bits=zeros(1,N);

elseif (a(i)==0)&&(b(i)==1)

bits=ones(1,N);

elseif (a(i)==1)&&(b(i)==0)

bits=2*ones(1,N);

else

bits=3*ones(1,N);

end

sig=[sig bits];

end

[Pxx,Pxxc,f] = pmtm(sig,3.5,1024,fs,0.99);

SIG= dspdata.psd(Pxx,'Fs',fs);

t=ts:ts:ts*m*N;

s=cos(2*pi*fc*t);

[Pxx,Pxxc,f] = pmtm(s,3.5,1024,fs,0.99);

S= dspdata.psd(Pxx,'Fs',fs);

s_ask=sig.*s;

[Pxx,Pxxc,f] = pmtm(s_ask,3.5,1024,fs,0.99);

S_ASK = dspdata.psd(Pxx,'Fs',fs);

subplot(321);plot(sig);title('4ASK数字基带信号');axis([0 400 -0.5 4]);grid on;

subplot(322);plot(SIG);title('4ASK数字基带信号功率谱');

subplot(325);plot(t,s);title('载波信号波形');axis([0 0.2 -1.5 1.5]);

subplot(326);plot(S);title('载波信号功率谱');

subplot(323);plot(t,s_ask);title('4ASK调制后信号波形');axis([0 0.2 -4 4]);

subplot(324);plot(S_ASK);title('4ASK调制后信号功率谱');

 

figure('Name','噪声及带通滤波','NumberTitle','off')

y = awgn(s_ask,snr);

[Pxx,Pxxc,f] = pmtm(y,3.5,1024,fs,0.99);

Y = dspdata.psd(Pxx,'Fs',fs);

 

a=[800,1200];

Wp=a/(fs/2);Rp=0.1; Rs=35;

Rp=0.1;Rs=35;

[b,a]=ellip(4,Rp,Rs,Wp);

q=filter(b,a,y);

[Pxx,Pxxc,f] = pmtm(q,3.5,1024,fs,0.99);

Q= dspdata.psd(Pxx,'Fs',fs);

 

subplot(221);plot(t,y);title('添加噪声后信号波形')

subplot(222);plot(Y);title('添加噪声后信号')

subplot(223);plot(t,q);title('带通滤波信号')

subplot(224);plot(Q);title('带通滤波信号')

 

%低通滤波及抽样判决

figure('Name','低通滤波及抽样判决','NumberTitle','off')

ask=q.*s;

Wp=400/(fs/2);

Rp=0.1; Rs=20;

[b,a]=ellip(4,Rp,Rs,Wp);

ss_ask=filter(b,a,ask);

[Pxx,Pxxc,f] = pmtm(ss_ask,3.5,1024,fs,0.99);

SS_ASK= dspdata.psd(Pxx,'Fs',fs);

subplot(221);plot(t,ss_ask);title('低通滤波信号')

subplot(222);plot(SS_ASK);title('低通滤波信号功率谱')

sss=[];

for i=1:m

if ss_ask(N*(i-1)+N/2)<0.25

a(i)=0;b(i)=0;

elseif ss_ask(N*(i-1)+N/2)<0.5

a(i)=0;b(i)=1;

elseif ss_ask(N*(i-1)+N/2)<0.75

a(i)=1;b(i)=0;

else

a(i)=1;b(i)=1;

end

end

for i=1:m

if (a(i)==0) &&(b(i)==0)

bits=zeros(1,N);

elseif (a(i)==0)&&(b(i)==1)

bits=ones(1,N);

elseif (a(i)==1)&&(b(i)==0)

bits=2*ones(1,N);

else

bits=3*ones(1,N);

end

sss=[sss bits];

end

subplot(223);plot(sss);

title('抽样判决信号');axis([0 850 -0.5 4]);grid on;

[Pxx,Pxxc,f] = pmtm(sss,3.5,1024,fs,0.99);

SSS= dspdata.psd(Pxx,'Fs',fs);

subplot(224);plot(SSS);title('抽样判决信号功率谱')

 

figure('Name','原信号与抽样判决信号比较图像','NumberTitle','off')

sig1=sig*1.5;

plot(sig1,':');title('原信号与抽样判决信号比较');axis([0 850 -0.5 5]);

hold on;

plot(sss);legend('原信号','判决信号');

 

基于Matlab 的数字基带和频带调制系统 实现图解教程1
基于Matlab 的数字基带和频带调制系统 实现图解教程2
------分隔线----------------------------
标签(Tag):MATLAB Matlab技巧 Matlab实例教程 matlab源代码 matlab基础教程
------分隔线----------------------------
推荐内容
猜你感兴趣