%otherwise.
Clear清除内容
echooff
t0=0.15;
ts=0.001;时间间隔
fc=250;载波频率
snr=20;信噪比为20DB
fs=1/ts;抽样频率
df=0.3;采样间隔
t=(0:
ts:
t0);时间范围
snr_lin=10^(snr/20);信噪比单位转换
%messagesignal
m=[ones(1,t0/(3*ts)),-2*ones(1,t0/(3*ts)),zeros(1,t0/(3*ts)+1)];
m的表达式;ones是全1矩阵;zeros是全0矩阵
c=cos(2*pi*fc.*t);载波表达式
u=(2+0.85*m).*c;已调信号表达式
%TospecifythepowerofXtobe0dBWandaddnoisetoproduce
%anSNRof10dB,use:
%X=sqrt
(2)*sin(0:
pi/8:
6*pi);awgn噪声函数调用
n=awgn(u,10,0)-u;噪声表达式
a=u+n;加噪声后已调信号表达式
[M,m,df1]=fftseq(m,ts,df);调用F变换求m的频谱
M=M/fs;按fs比例缩放
[U,u,df1]=fftseq(u,ts,df);调用F变换求u的频谱
U=U/fs;按fs比例缩放
[C,c,df1]=fftseq(c,ts,df);调用F变换求c的频谱
f=[0:
df1:
df1*(length(m)-1)]-fs/2;
[N,n,df1]=fftseq(n,ts,df);调用F变换求n的频谱
N=N/fs;按fs比例缩放
[A,a,df1]=fftseq(a,ts,df);调用F变换求a的频谱
A=A/fs;按fs比例缩放
signal_power=spower(u(1:
length(t)));信号功率计算
noise_power=signal_power/snr_lin;噪声功率计算
'显示信号功率和噪声功率'
pause按一个键显示
signal_power信号功率
noise_power噪声功率
'显示基带信号波形图'
pause按一个键看图
clf清空当前figure
figure
(1)
plot(t,m(1:
length(t)))以t为横坐标,m为纵坐标画图
xlabel('Time')横坐标为'Time'
title('Themessagesignal')标题为'Themessagesignal'
'显示载波信号和调制信号波形图'
pause按一个键看图
figure
(2)
subplot(2,1,1)把多个图画到同一个平面上,位置为1行1列
plot(t,c(1:
length(t)))以t为横坐标,c为纵坐标画图
xlabel('Time')横坐标为'Time'
title('Thecarrier')标题为'Thecarrier'
subplot(2,1,2)把多个图画到同一个平面上,位置为1行2列
plot(t,u(1:
length(t)))以t为横坐标,u为纵坐标画图
xlabel('Time')横坐标为'Time'
title('Themodulatedsignal')标题为'Themodulatedsignal'
'显示基带信号和调制信号的频谱图'
pause
figure(3)
subplot(2,1,1)把多个图画到同一个平面上,位置为1行1列
plot(f,abs(fftshift(M)))以f为横坐标,M为纵坐标画图
xlabel('frequency')横坐标为'frequency'
title('spectrumofthemessagesignal')标题为'spectrumofthemessagesignal'
subplot(2,1,2)
plot(f,abs(fftshift(U)))
title('spectrumofthemodulatedsignal')
xlabel('frequency')
'显示噪声和已调信号加噪声的波形'
pause
figure(4)
subplot(2,1,1)
plot(t,n(1:
length(t)))
xlabel('Time')
title('Thenoisesignal')
subplot(2,1,2)
plot(t,a(1:
length(t)))
xlabel('Time')
title('Themodulatednoisesignal')
'显示噪声和已调信号加噪声的频谱'
pause
figure(5)
subplot(2,1,1)
plot(f,abs(fftshift(N)))
xlabel('frequency')
title('spectrumofthemessagesignal')
subplot(2,1,2)
plot(f,abs(fftshift(A)))
title('spectrumofthemodulatedsignal')
xlabel('frequency')
结果如下:
signal_power=
2.0484
noise_power=
0.2048
2、高斯信道容量
(1)画出带宽B=3000Hz的加性高斯白噪声信道的容量作为S/n0函数的图形,其中S为信号功率,n0为噪声单边密度谱,S/n0在-20dB至30dB之间变化。
(2)画出S/n0=25dB时,加性白高斯噪声信道的容量作为带宽B函数的图形,尤其是当B无限增加时,信道容量是什么?
程序如下:
Clear清除内容
clc
clf
b=3000;加性高斯白噪声的带宽
sn0=-20;起始信噪比
sn1=30;末端信噪比
ns=0.01;
N=(sn0:
ns:
sn1);
snr=10.^(N/10);
ct=b.*log2(1+snr.*(1/b));
figure
(1)
plot(snr,ct);
xlabel('s/n0');
title('高斯信道容量');
holdon;
clear
clc
clf
n1=2.5;
sn1=10.^n1;
b0=300000;
bs=10;
B=(3000:
bs:
b0);
b=1./B;
ct=B.*(log2(1+sn1.*b));
figure
(2)
plot(B,ct);
xlabel('B');
title('信道容量');
holdon;
3、2FSK信号的相关形式最佳接收机
考虑一个等概二进制通信系统,它采用由下式给出的2FSK信号波形
,这里
和
。
信道给予每个传输信号的相移为
,这样在无噪声下接收信号是
,
。
用数值方法实现该2FSK信号的相关形式最佳接收机(接收机结构如图1所示,假设
表示二进制符号“0”,
表示二进制符号“1”)。
图1:
相关形式的最佳接收机
程序如下;
clearall;
clf;
Tb=1;
f1=1000/Tb;
f2=f1+1/Tb;
p=pi/4;
N=12000;
n=N/2;
t=0:
Tb/(n-1):
Tb;%t=0:
1/(n-1):
1;
T=0:
2*Tb/(N-1):
2*Tb;%T=0:
4*1/(N-1):
4*1;
s1=[cos(2*pi*f1*t+p)cos(2*pi*f1*t+p)];
s2=[cos(2*pi*f2*t+p)cos(2*pi*f2*t+p)];%assumethetransmitsignalis"10",ie.u2u1andu2
a=[cos(2*pi*f2*t+p)cos(2*pi*f2*t+p)];%aisthereceivedsignal
b=a.*s1;
c=a.*s2;
forj=1:
2
fori=1:
n;
d((j-1)*n+i)=sum(b((j-1)*n+1:
(j-1)*n+i));
end;
end;
%求积分
forj=1:
2
fori=1:
n;
e((j-1)*n+i)=sum(c((j-1)*n+1:
(j-1)*n+i));
end;
end;
%求积分
forj=1:
2;
ifd(j*n)>e(j*n);
f((j-1)*n+1:
j*n)=zeros(1,n);%输出0
else
f((j-1)*n+1:
j*n)=ones(1,n);%输出1
end;
end;
%比较器
figure
(1)
plot(T,a);
xlabel('时间');
ylabel('幅度');
title('figurea');
holdon
pause
figure
(2)
subplot(2,1,1);
plot(T,b);
ylabel('幅度');
title('figureb');
subplot(2,1,2)
plot(T,c);
ylabel('幅度');
xlabel('时间');
ylabel('幅度');
title('figurec');
holdon
pause
figure(3)
subplot(3,1,1);
plot(T,d);
ylabel('幅度');
title('figured');
subplot(3,1,2);
plot(T,e);
ylabel('幅度');
title('figuree');
holdon
pause
figure(4)
subplot(4,1,1);
plot(T,f);
xlabel('时间');
ylabel('幅度');
title('figuref');