当前位置:首页 » 《随便一记》 » 正文

通信原理与MATLAB(一):AM的调制解调

11 人参与  2023年04月01日 15:22  分类 : 《随便一记》  评论

点击全文阅读


目录

1.AM的调制原理2.AM的解调原理3. AM调制解调的代码4.AM调制解调结果图5.AM的优缺点

1.AM的调制原理

AM的调制原理如下图所示,基带信号m(t)和直流量A0相加,然后和高频载波相乘实现AM信号的调制。
在这里插入图片描述

2.AM的解调原理

AM的解调原理如下图所示,AM信号经过信道传输之后,再和载波相乘,然后经过低通滤波,隔直流之后恢复出原始基带信号。
在这里插入图片描述

3. AM调制解调的代码

AM.m文件,主文件

% AM调制解调过程%% 基本参数clear all;                  % 清除变量close all;                  % 关闭所有窗口图像fm = 100;                   % 基带信号频率T = 2;                      % 信号时长fs = 20000;                 % 采样频率 奈奎斯特采样定理为最大频率的两倍,这里取20倍为了绘制更多的细节,让时域信号更平滑dt=1/fs;                    % 时间采样间隔,采样频率的倒数N=T/dt;                     % 采样点个数,总时长除以采样间隔t=[0:N-1]*dt;               % 采样点的时间序列,作为横坐标%% ******************调制信号时域波形******************Am=1;                       % 基带信号幅度 mt=Am*cos(2*pi*fm*t);       % 基带信号figure(1);                  % 绘制第一幅图subplot(221);               % 窗口分割,将一幅图分割成2*2的plot(t,mt,'Linewidth',2);   % 时间t为横坐标,基带信号mt为纵坐标绘图,线宽为2xlabel('t/时间');           % 横坐标标注ylabel('幅度');             % 纵坐标标注title('基带信号');          % 图标题标注axis([0,0.1,-1.1,1.1]);     % 横纵坐标范围设置line([0,0.1],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.1,0)的蓝色实线,线宽为2%% ******************调制信号频域波形******************subplot(222);[mf,msf]=T2F(t,mt);         % 傅里叶变换,得到纵坐标频谱和横坐标频率plot(mf,abs(msf),'Linewidth',2);    % 画出基带信号频谱,线宽为2title('基带信号的频谱');            % 图标题标注xlabel('f/Hz');                     % 横坐标标注ylabel('幅度/H(f)');                % 纵坐标标注axis([-150 150 -inf inf]);          % 横纵坐标范围设置%% ******************载波信号时域波形******************subplot(223);fc=1000;                            % 载波频率zaibo=cos(2*pi*fc*t);               % 载波时域信号plot(t,zaibo,'r','Linewidth',2);    % 时间t为横坐标,载波信号zaibo为纵坐标绘图,线宽为2,红色xlabel('t/时间');                   % 横坐标标注ylabel('幅度');                     % 纵坐标标注title('载波信号');                  % 图标题标注axis([0,0.01,-1.1,1.1]);            % 横纵坐标范围设置line([0,0.01],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.01,0)的蓝色实线,线宽为2%% ******************载波信号频域波形******************subplot(224);[mf1,msf1]=T2F(t,zaibo);            % 傅里叶变换,得到纵坐标频谱和横坐标频率plot(mf1,abs(msf1),'r','Linewidth',2);  % 载波信号频谱,线宽为2,红色title('载波信号的频谱');            % 图标题标注xlabel('f/Hz');                     % 横坐标标注ylabel('幅度/H(f)');                % 纵坐标标注axis([-1200 1200 -inf inf]);        % 横纵坐标范围设置%% ******************AM波信号时域波形******************Ma=0.5;                             % 调制指数A0=Am/Ma;                           % 直流信号幅度sam=(A0+mt).*zaibo;                 % 画出AM信号波形%% 加噪声SNR=20;                              %信噪比为  dBsam=awgn(sam,SNR,'measured');figure(2);                          % 绘制第二幅图subplot(211);                       % 窗口分割,将一幅图分割成2*1的plot(t,sam,'Linewidth',2);          % 画出AM信号波形,线宽为2hold on;                            % 当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存plot(t,A0+mt,'r-');                 % 画出AM信号包络,红色实线title('调制指数为0.5的AM调制信号及其包络');% 图标题标注xlabel('t/时间');                   % 横坐标标注ylabel('幅度');                     % 纵坐标标注axis([0,0.02,-3.1,3.1]);            % 横纵坐标范围设置line([0,0.02],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.02,0)的蓝色实线,线宽为2%% ******************AM波信号频域波形******************[mf2,msf2]=T2F(t,sam);              % 傅里叶变换,得到纵坐标频谱和横坐标频率subplot(212);plot(mf2,abs(msf2),'Linewidth',2);  % 画出AM信号频谱title('AM波信号的频谱');            % 图标题标注xlabel('f/Hz');                     % 横坐标标注ylabel('幅度/H(f)');                % 纵坐标标注axis([-1500 1500 -inf inf]);        % 横纵坐标范围设置%% ******************相干解调******************%% ******************已调信号与载波信号相乘******************st=sam.*zaibo;                      % 已调信号与载波信号相乘figure(3);                          % 绘制第三幅图subplot(211);                       % 窗口分割,将一幅图分割成2*1的plot(t,st,'Linewidth',2);           % 时间t为横坐标,相乘信号st为纵坐标绘图,线宽为2title('已调信号与载波信号相乘');    % 图标题标注xlabel('t/时间');                   % 横坐标标注ylabel('幅度');                     % 纵坐标标注axis([0 0.02 -4 4]);                % 横纵坐标范围设置line([0,0.02],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.02,0)的蓝色实线,线宽为2%% ******************已调信号与载波信号相乘的频谱******************[f,sf]=T2F(t,st);                   % 傅里叶变换,得到纵坐标频谱和横坐标频率subplot(212);                       % 窗口分割,将一幅图分割成2*1的plot(f,sf,'Linewidth',2);           % 绘制相乘信号st的频谱,线宽为2title('已调信号与载波信号相乘的频谱');% 图标题标注xlabel('f/Hz');                     % 横坐标标注ylabel('幅度/H(f)');                % 纵坐标标注axis([-2200 2200 -inf inf]);        % 横纵坐标范围设置%% ******************解调出来的信号******************[t,st]=lpf(f,sf,2*fm);              % 频域低通滤波figure(4);                          % 绘制第三幅图subplot(211);                       % 窗口分割,将一幅图分割成2*1的plot(t,2*st-A0,'Linewidth',2);      % 绘制解调波形title('经过低通滤波的相干解调信号波形');% 图标题标注xlabel('t/时间');                   % 横坐标标注ylabel('幅度');                     % 纵坐标标注axis([0 0.1 -1.1 1.1]);                 % 横纵坐标范围设置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.1,0)的蓝色实线,线宽为2%% ******************原始信号******************subplot(212);plot(t,mt,'r-','Linewidth',2);      % 绘制原始基带信号title('原始基带信号');                    % 图标题标注xlabel('t/时间');                   % 横坐标标注ylabel('幅度');                     % 纵坐标标注axis([0 0.1 -1.1 1.1]);                 % 横纵坐标范围设置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.1,0)的蓝色实线,线宽为2

T2F.m文件,FFT功能

function [f,sf]= T2F(t,st)      % FFT% dt = t(2)-t(1);T=t(end);                       % 输入信号的时间最大值为Tdf = 1/T;                       % dt=1/fs; 时间采样间隔,采样频率的倒数;                                % N=T/dt;  采样点个数,总时长除以采样间隔                                % 两式联合推导 df = 1/T N = length(st);                 % 输入信号时间的长度为采样点数f=-N/2*df : df : N/2 * df-df;   % 频率分布sf = fft(st);                   % 做FFTsf = T/N * fftshift(sf);        % 最后输出,将0-fs频谱搬移到-fs/2-fs/2频谱

F2T.m文件,IFFT功能

function[t,st]=F2T(f,Sf)        % IFFTdf=f(2)-f(1);                   % 频率间隔fmax=(f(end)-f(1)+df);          % 最大频率减最低频率加上频率间隔为带宽dt=1/fmax;                      % 采样间隔N=length(f);                    % 采样点数t=[0:N-1] * dt;                 % 时间分布Sf=fftshift(Sf);                % 将0-fs频谱搬移到-fs/2-fs/2频谱st=fmax * ifft(Sf);             % 做IFFTst=real(st);                    % 取实部

lpf.m文件,低通滤波功能

function[t,st]=lpf(f,sf,B)          % 频率LPFdf=f(2)-f(1);                       % 频率间隔fN=length(f);                       % 采样点数ym=zeros(1,fN);                     % 生成1行fN列的0向量xm=floor(B/df);                     % 低频带宽频率除以间隔后的点数向下取整xm_shift=[-xm:xm-1]+floor(fN/2);    % 因为前面做FFT将0频率搬移到中心处,                                    % 因此,低通低频频率相应地搬移fN/2,才是对应的频率点ym(xm_shift)=1;                     % 低通通过频率处幅度为1,其余为0,相当于理想低通yf=ym.* sf;                         % FFT信号的频谱和对应低频带宽处频率值为1的行向量相乘[t,st]=F2T(f,yf);                   % IFFT

注意:这四个文件要放在同一文件夹中,第一个是主文件,另外三个是函数文件

4.AM调制解调结果图

结果图中AM信号是经过信道,加了高斯白噪声的。
如果不想加噪声,把下面这行代码注释即可。

sam=awgn(sam,SNR,'measured');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.AM的优缺点

优点:实现简单,具有直流量便于载波同步;
缺点:直流量占用较大能量,但不传递信息,功率利用率低。


点击全文阅读


本文链接:http://zhangshiyu.com/post/57810.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1