网站做曲线的源代码,岳阳公司做网站,上海网站 备案,莱芜论坛莱芜话题吕金梦#xff08;内容源自详解MATLAB#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第五章内容#xff0c;有兴趣的读者请阅读原书#xff09;
1.幅度调制 clear all
ts0.0025; %信号抽样时间间隔
t0:ts:10-ts;%时间矢量
fs1/ts;%抽样频率
dffs/length(t); %fft的频率分…内容源自详解MATLABSIMULINK 通信系统建模与仿真 刘学勇编著第五章内容有兴趣的读者请阅读原书
1.幅度调制 clear all
ts0.0025; %信号抽样时间间隔
t0:ts:10-ts;%时间矢量
fs1/ts;%抽样频率
dffs/length(t); %fft的频率分辨率
%msgrandint(100,1,[-3,3],123)
msgrandi([-3,3],100,1);%生成消息序列
msg1msg*ones(1,fs/10);%扩展成取样信号形式
msg2reshape(msg1.,1,length(t));
Pmfft(msg2)/fs%除以fs才是模拟信号的实际频谱
f-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))%画出消息信号频谱
title(消息信号频谱)A4;
fc100;%载波频率
Sam(Amsg2).*cos(2*pi*fc*t);%已调信号
Pamfft(Sam)/fs;%已调信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Pam)))
title(AM信号频谱)
axis([-200 200 0 23])Pcsum(abs(Sam).^2)/length(Sam);%已调信号功率
PsPc-A^2/2;%消息信号功率
etaPs/Pc;%调制效率
首先是生成消息序列时的操作我们生成的是模拟信号所以要进行采样转化为数字信号
这里我们每隔0.1秒产生一个符号时间长度为10s所以一共产生100个符号又因为采样时间为0.0025所以我们每个符号都采样40次0.1/0.0025采样40次的效果就是每个序号在采样之后都出现了40次重复的情况这里用ones实现了该效果
将采样后的信号通过矩阵变换转成行向量。这就是采样后的数字信号。 由于时间有限simulink的仿真内容之后有空再补 clear all
ts0.0025; %信号抽样时间间隔
t0:ts:5-ts;%时间矢量
fs1/ts;%抽样频率%msgrandint(100,1,[-3,3],123)
msgrandi([-3,3],10,1);%生成消息序列
msg1msg*ones(1,fs/2);
msg2reshape(msg1.,1,length(t));
subplot(3,1,1)
plot(t,msg2)
title(消息信号)
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
A4;
fc100;
Sam(Amsg2).*cos(2*pi*fc*t);demsabs(hilbert(Sam))-A;%包络检波并且去掉直流分量subplot(3,1,2)
plot(t,dems)%画出解调后的信号
title(无噪声的解调信号)yawgn(Sam,20,measured);%调制信号通过AWGN信道
dems2abs(hilbert(y))-A;%包络检波并且去掉直流分量
subplot(3,1,3)
plot(t,dems2)
title(信噪比为20dB时的解调信号) clear all
ts0.0025; %信号抽样时间间隔
t0:ts:10-ts;%时间矢量
fs1/ts;%抽样频率
dffs/length(t); %fft的频率分辨率
%msgrandint(100,1,[-3,3],123)
msgrandi([-3,3],100,1);%生成消息序列
msg1msg*ones(1,fs/10);%扩展成取样信号形式
msg2reshape(msg1.,1,length(t));
Pmfft(msg2)/fs%除以fs才是模拟信号的实际频谱
f-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))%画出消息信号频谱
title(消息信号频谱)A4;
fc100;%载波频率
Sdsbmsg2.*cos(2*pi*fc*t);%已调信号
Pdsbfft(Sdsb)/fs;%已调信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Pdsb)))
title(DSBSC信号频谱)
axis([-200 200 0 2])Pcsum(abs(Sdsb).^2)/length(Sdsb);%已调信号频谱
Pssum(abs(msg2).^2)/length(msg2);%消息信号功率 和AM的思路一样都是先生成消息序列后构建数字信号 clear all
ts0.0025;
t0:ts:5-ts;
fs1/ts;
dffs/length(t);
f-fs/2:df:fs/2-df;
msgrandi([-3,3],10,1);%生成消息序列
msg1msg*ones(1,fs/2);%扩展成取样信号的形式
msg2reshape(msg1.,1,length(t));subplot(3,1,1)
plot(t,msg2)
title(消息信号)fc100;
Sdsbmsg2.*cos(2*pi*fc*t);%已调信号
ySdsb.*cos(2*pi*fc*t);%相干解调
Yfft(y)./fs;%解调后的频谱
f_stop100;%设计低通滤波器
n_stopfloor(f_stop/df);%
Hlowzeros(size(f));
Hlow(1:n_stop)2;
Hlow(length(f)-n_stop1:end)2;
DEMY.*Hlow;%通过点乘的方式使信号通过滤波器
demreal(ifft(DEM))*fs;%最终得到的解调信号因为刚开始构建的是实数信号所以需要对DEM取实部。
subplot(3,1,2)
plot(t,dem);
title(无噪声的解调信号)y1awgn(Sdsb,20,measured);
y2y1.*cos(2*pi*fc*t);
Y2fft(y2)./fs;
DEM1Y2.*Hlow;
dem1real(ifft(DEM1))*fs;
subplot(3,1,3)
plot(t,dem1)
title(信噪比为20dB时的解调信号)在构建低通滤波器时思路如下pi处是高频2pi处是低频 clear all
ts0.0025;
t0:ts:10-ts;
fs1/ts;
dffs/length(t);
f-fs/2:df:fs/2-df;
msgrandi([-3,3],100,1);%生成消息序列
msg1msg*ones(1,fs/10);%扩展成取样信号的形式
msg2reshape(msg1.,1,length(t));
Pmfft(msg2)/fs;
f-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))
title(消息信号的频谱)fc100;%载波频率
Sdsbmsg2.*cos(2*pi*fc*t);%DSB信号
Pdsbfft(Sdsb)/fs;%DSB信号频谱f_stop100;%低通滤波器的截止频率
n_stopfloor(f_stop/df);%floor向下取整函数
Hlowzeros(size(f));%设计低通滤波器
Hlow(1:n_stop)1;
Hlow(length(f)-n_stop1:end)1;
PlssbPdsb.*Hlow;%LSSB信号频谱
subplot(2,1,2)
plot(f,fftshift(abs(Plssb)))
title(已调信号频谱)
axis([-200 200 0 2])Slssbreal(ifft(Plssb))*fs;
Pcsum(abs(Slssb).^2)/length(Slssb)%已调信号功率
Pssum(abs(msg2).^2)/length(msg2)%消息信号功率这次的代码是用滤波法实现单边带信号的滤波的思路如下图 clear all
ts0.0025;
t0:ts:10-ts;
fs1/ts;
dffs/length(t);
f-fs/2:df:fs/2-df;
msgrandi([-3,3],100,1);%生成消息序列
msg1msg*ones(1,fs/10);%扩展成取样信号的形式
msg2reshape(msg1.,1,length(t));
Pmfft(msg2)/fs;
f-fs/2:df:fs/2-df;
subplot(2,1,1)
plot(f,fftshift(abs(Pm)))
title(消息信号的频谱)fc100;
s10.5.*msg2.*cos(2*pi*fc*t);%DSB信号
hmsgimag(hilbert(msg2));%imag返回虚部
s20.5*hmsg.*sin(2*pi*fc*t);
Sussbs1-s2;
Pussbfft(Sussb)/fs;
subplot(2,1,2)
plot(f,fftshift(abs(Pussb)))
title(USSB信号频谱)
axis([-200 200 0 2])Pcsum(abs(Sussb).^2)/length(Sussb)
Pssum(abs(msg2).^2)/length(msg2)
这里hilbert取虚部的原因是因为matlab中的hilbert变换是返回一个复数序列其实部是原序列而虚部才是要求的Hilbert变换。 clear all
ts0.0025;
t0:ts:5-ts;
fs1/ts;
dffs/length(t);
f-fs/2:df:fs/2-df;
msgrandi([-3,3],10,1);%生成消息序列
msg1msg*ones(1,fs/2);%扩展成取样信号的形式
msg2reshape(msg1.,1,length(t));
Pmfft(msg2)/fs;
f-fs/2:df:fs/2-df;
subplot(3,1,1)
plot(t,msg2)
title(消息信号的频谱)fc300;
s10.5.*msg2.*cos(2*pi*fc*t);%DSB信号
hmsgimag(hilbert(msg2));%imag返回虚部
s20.5*hmsg.*sin(2*pi*fc*t);
Sussbs1-s2;
ySussb.*cos(2*pi*fc*t);
Yfft(y)./fs;
f_stop100;
n_stopfloor(f_stop/df);
Hlowzeros(size(f));
Hlow(1:n_stop)4;
Hlow(length(f)-n_stop1:end)4;
DEMY.*Hlow;
demreal(ifft(DEM))*fs;
subplot(3,1,2)
plot(t,dem);
title(无噪声的解调信号)y1awgn(Sussb,20,measured);
y2y1.*cos(2*pi*fc*t);
Y2fft(y2)./fs;
DEM1Y2.*Hlow;
dem1real(ifft(DEM1))*fs;
subplot(3,1,3)
plot(t,dem1)
title(信噪比为20dB时的解调信号) 与DSB解调思路相同 都是相干解调后经过低通滤波器取实部