• 大小: 4KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-12
  • 语言: Matlab
  • 标签: matlab  dsb  ssb  am  代码  

资源简介

matlab模拟幅度调制源代码 通信工程MATLAB课程的教学实例

资源截图

代码片段和文件信息

% MATLAB script for Illustrative Problem 3.3.

%...........参数设置..............
echo off
close allclear
fs=200;                 %采样频率,由采样定理决定
ts=1/fs;                %采样间隔ts由fs决定
fc=50;                  %载波频率
snr=20;                 %dB表示的信噪比
snr_lin=10^(snr/10);    %线性信噪比的值
t0=0.5;
t=[0:ts:t0];            %时间向量的表达,时间范围[0t0]
df0=0.2;                %频率分辨率的下限为0.2

%...........消息信号m(t)的时域描述...........
m=zeros(1length(t));   %消息信号m(t)赋初值
for i=1:length(t) 
    if t(i)<=t0/5
        m(i)=2;
    elseif t(i)<=3*t0/5
        m(i)=-1;
    else
        m(i)=0;
    end
end

%........... 第一部分:调制 ...........
%正弦载波信号c(t)的时域表达
c=cos(2*pi*fc*t);

%DSB已调信号u(t)的时域表达
A0=1;
u=(A0+m).*c;

%求出消息信号和已调信号的傅立叶变换
N1=length(m);
N2=fs/df0;
N=2^(nextpow2(max(N1 N2)));    %求fft的点数N
df=fs/N;                        %最终的频率分辨率
f=linspace(-fs/2fs/2-dfN);    %频域轴的向量,0频点在中间 

M=fftshift(fft(mN)/fs);        %求消息信号的傅立叶变换
U=fftshift(fft(uN)/fs);        %求已调信号的傅立叶变换

%画出消息信号和已调信号的时域图和幅度谱
figure
subplot(221)
plot(tm)
xlabel(‘t/s‘)
ylabel(‘m(t)‘)
axis([00.5-1.12.1])
subplot(223)
plot(tu)
xlabel(‘t/s‘)
ylabel(‘u(t)‘)
subplot(222)
plot(fabs(M))
xlabel(‘f/Hz‘)
ylabel(‘M(f)‘)
subplot(224)
plot(fabs(U))
xlabel(‘f/Hz‘)
ylabel(‘U(f)‘)
%........... 第一部分:调制结束 ...........

%........... 第二部分: 加噪声 ...........
signal_power=(sum(u.^2))/length(u); %计算(已调)信号的功率
noise_power=signal_power/snr_lin;   %计算噪声的功率,均值为0,所以对应噪声的方差
noise_std=sqrt(noise_power);        %计算噪声的标准差
noise=noise_std*randn(1length(u)); %得到噪声向量
r=u+noise;                          %接收端的接收信号,加入了噪声

%画出接收信号的时域图和幅度谱
figure
subplot(211)
plot(tr)
xlabel(‘t/s‘)
ylabel(‘r(t)‘)
axis([00.5-66])
subplot(212)
R=fftshift(fft(rN)/fs);        %求消息信号的傅立叶变换
plot(fabs(R))
xlabel(‘f/Hz‘)
ylabel(‘R(f)‘)
%........... 第二部分: 加噪声结束...........

%........... 第三部分: 包络解调 ...........
y=abs(hilbert(r));              %利用hilbert函数求包络既sqrt(r^2+r^(t)^2)
y=y-A0;                         %减去在发送端加入的直流部分
Y=fftshift(fft(yN)/fs);        %求y(t)的傅立叶变换

%画出最后解调信号的时域图和幅度谱
figure
subplot(211)
plot(ty)
xlabel(‘t/s‘)
ylabel(‘y(t)‘)
subplot(212)
plot(fabs(Y))
xlabel(‘f/Hz‘)
ylabel(‘Y(f)‘)































 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2633  2010-06-14 11:00  模拟幅度调制\am.m

     文件       2841  2010-06-14 10:38  模拟幅度调制\dsb.m

     文件        433  2010-06-14 10:02  模拟幅度调制\power_example.m

     文件       2896  2010-06-14 10:50  模拟幅度调制\ssb.m

     目录          0  2010-06-16 19:49  模拟幅度调制

----------- ---------  ---------- -----  ----

                 8803                    5


评论

共有 条评论