通信人家园
标题: MATLAB实现通信系统仿真实例 [查看完整版帖子] [打印本页]
时间: 2015-5-9 13:55
作者: xiaoxue6228
标题: MATLAB实现通信系统仿真实例
补充内容:模拟调制系统的MATLAB仿真1.抽样定理为了用实验的手段对连续信号分析,需要先对信号进行抽样(时间上的离散化),把连续数据转变为离散数据分析。抽样(时间离散化)是模拟信号数字化的第一步。
Nyquist抽样定律:要无失真地恢复出抽样前的信号,要求抽样频率要大于等于两倍基带信号带宽。
抽样定理建立了模拟信号和离散信号之间的关系,在Matlab中对模拟信号的实验仿真都是通过先抽样,转变成离散信号,然后用该离散信号近似替代原来的模拟信号进行分析的。
【例1】用图形表示DSB调制波形 及其包络线。
clf
%%计算抽样时间间隔
fh=1;%%调制信号带宽(Hz)
fs=100*fh;%%一般选取的抽样频率要远大于基带信号频率,即抽样时间间隔要尽可能短。
ts=1/fs;
%%根据抽样时间间隔进行抽样,并计算出信号和包络
t=(0:ts:pi/2)';%抽样时间间隔要足够小,要满足抽样定理。
envelop=cos(2*pi*t);%%DSB信号包络
y=cos(2*pi*t).*cos(4*pi*t);%已调信号
%画出已调信号包络线
plot(t,envelop,'r:','LineWidth',3);
hold on
plot(t,-envelop,'r:','LineWidth',3);
%画出已调信号波形
plot(t,y,'b','LineWidth',3);
axis([0,pi/2,-1,1])%
hold off%
xlabel('t');
%写出图例
legend('包络','双边带已调信号')
【例2】用图形表示DSB调制波形 及其包络线。
clf
%%计算抽样时间间隔
fh=1;%%调制信号带宽(Hz)
fs=100*fh;%抽样时间间隔要足够小,要满足抽样定理。
ts=1/fs;
%%根据抽样时间间隔进行抽样
t=(0:ts:pi/2);
envelop=cos(2*pi*t);%%DSB信号包络
y=cos(2*pi*t).*cos(6*pi*t);%已调信号
%画出已调信号包络线
plot(t,envelop,'r:','LineWidth',3);hold on
plot(t,-envelop,'r:','LineWidth',3);
%画出已调信号波形
plot(t,y,'b','LineWidth',3);
axis([0,pi/2,-1,1]);
hold off%%
注意观察:过零点“反相”现象。
2.信号的频谱和功率【例3】画出DSB信号的频谱并计算已调信号的功率。
clf
%%计算抽样时间间隔
fh=1;%%调制信号带宽(Hz)
fs=20*fh;
ts=1/fs;
%%根据抽样时间间隔进行抽样
t=(0:ts:2*pi);%抽样时间间隔要足够小,要满足抽样定理。
y=cos(2*pi*t).*cos(10*pi*t);%已调信号
%计算已调信号的傅立叶变化
n=2^nextpow2(length(t));%傅立叶变换的序列长度
spectrum=fft(y,n);
df=fs/n;%频率分辨率
f=[0:df:df*(length(spectrum)-1)]-fs/2;%FFT频率向量
%计算信号功率
p=(norm(y)^2)/length(y)
%画出已调信号频谱
plot(f,fftshift(abs(spectrum)),'b','LineWidth',3);
xlabel('frequency/Hz');title('Magnitude-spectrum of y');
p =
0.2520
3.AWGN的产生及功率谱密度已知AWGN信道中噪声的比特信噪比为10dB,信号功率0.25W,求噪声功率并画出噪声的时域波形。
clf
%%计算抽样时间间隔
fh=1;%%调制信号带宽(Hz)
fs=40*fh;
ts=1/fs;
t=(0:ts:2*pi);%根据抽样间隔生成抽样时间
%生成AWGN噪声序列
snr=10;%信噪比10dB
snr_lin=10^(snr/10);%分贝信噪比转换为线性信噪比
noise_power=p_DSB/snr_lin
noise_std=sqrt(noise_power);
noise=randn(1,length(y))*noise_std;
plot(t,noise,'LineWidth',2)
noise_power =
0.0250
4.DSB调制解调【例4】画出基带信号和DSB信号的频谱并计算基带信号和已调信号的功功率。
clf
%%计算抽样时间间隔
fh=1;%%调制信号带宽(Hz)
fs=40*fh;
ts=1/fs;
%%根据抽样时间间隔进行抽样
t=(0:ts:pi);%抽样时间间隔要足够小,要满足抽样定理。
m=cos(2*pi*t);%基带信号
y=m.*cos(10*pi*t);%已调信号
%计算基带信号的傅立叶变换
n=2^nextpow2(length(t));%傅立叶变换的序列长度
spectrum_baseband=fft(m,n);
df=fs/n;%频率分辨率
f=[0:df:df*(length(spectrum_baseband)-1)]-fs/2;%FFT频率向量
%计算已调信号的频谱
n=2^nextpow2(length(t));%傅立叶变换的序列长度
spectrum_DSB=fft(y,n);
df=fs/n;%频率分辨率
f=[0:df:df*(length(spectrum_DSB)-1)]-fs/2;%FFT频率向量
%计算信号功率
p_baseband=(norm(m)^2)/length(m)
p_DSB=(norm(y)^2)/length(y)
%画出已调信号频谱
subplot(2,1,1);
plot(f,fftshift(abs(spectrum_baseband)),'b','LineWidth',3);
xlabel('frequency/Hz');title('Magnitude-spectrum of baseband');
subplot(2,1,2);
plot(f,fftshift(abs(spectrum_DSB)),'b','LineWidth',3);
xlabel('frequency/Hz');title('Magnitude-spectrum of DSB');
p_baseband =
0.5145
p_DSB =
0.2602
已知AWGN信道中噪声的比特信噪比为10dB,求噪声功率并绘出信道中传输的信号。
clf
snr=10;%信噪比10dB
snr_lin=10^(snr/10);%分贝信噪比转换为线性信噪比
noise_power=p_DSB/snr_lin;
noise_std=sqrt(noise_power);
noise=randn(1,length(y))*noise_std;
signal_in_channel=y+noise;
subplot(2,1,1);
plot(t,signal_in_channel,'b')
xlabel('t');ylabel('DSB signal plus noise');axis([0,pi,-1,1]);
subplot(2,1,2);
plot(t,y,'r');
xlabel('t');ylabel('DSB signal');
通信人家园 (https://test.txrjy.com/) |
Powered by C114 |