关于我写通信原理作业的笔记:matlab中DSB,ssb,AM调制的心得代码

fm = 2; % 基带信号频率

T = 2; % 信号时长

fs = 2000 % 采样频率 奈奎斯特采样定理为最大频率的两倍,这里取20倍为了绘制更多的细节,让时域信号更平滑

dt=1/fs; % 时间采样间隔,采样频率的倒数

N=T/dt; % 采样点个数,总时长除以采样间隔

t=[0:N-1]*dt; % 采样点的时间序列,作为横坐标

%% ******************调制信号时域波形******************

Am=2; % 基带信号幅度

mt=Am*cos(2*pi*fm*t); % 基带信号

figure(1); % 绘制第一幅图

subplot(221); % 窗口分割,将一幅图分割成2*2的

plot(mt,'Linewidth',2); % 时间t为横坐标,基带信号mt为纵坐标绘图,线宽为2

xlabel('t/时间'); % 横坐标标注

ylabel('幅度'); % 纵坐标标注

title('基带信号'); % 图标题标注

axis([0,2000,-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); % 画出基带信号频谱,线宽为2

title('基带信号的频谱'); % 图标题标注

xlabel('f/Hz'); % 横坐标标注

ylabel('幅度/H(f)'); % 纵坐标标注

axis([-5 5 -inf inf]); % 横纵坐标范围设置

%% ******************载波信号时域波形******************

subplot(223);

fc=80; % 载波频率

zaibo=cos(2*pi*fc*t); % 载波时域信号

plot(t,zaibo,'r','Linewidth',2); % 时间t为横坐标,载波信号zaibo为纵坐标绘图,线宽为2,红色

xlabel('t/时间'); % 横坐标标注

ylabel('幅度'); % 纵坐标标注

title('载波信号'); % 图标题标注

axis([0,2,-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([-120 120 -inf inf]); % 横纵坐标范围设置

%% ******************DSB波信号时域波形******************

dsb=mt.*zaibo; % 画出DSB信号波形

figure(2); % 绘制第二幅图

subplot(211); % 窗口分割,将一幅图分割成2*1的

plot(t,dsb,'Linewidth',2); % 画出AM信号波形,线宽为2

title('DSB调制信号'); % 图标题标注

xlabel('t/时间'); % 横坐标标注

ylabel('幅度'); % 纵坐标标注

axis([0,2,-3.1,3.1]); % 横纵坐标范围设置

line([0,0.02],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.02,0)的蓝色实线,线宽为2

%% ******************DSB波信号频域波形******************

[mf2,msf2]=T2F(t,dsb); % 傅里叶变换,得到纵坐标频谱和横坐标频率

subplot(212);

plot(mf2,abs(msf2),'Linewidth',2); % 画出DSB信号频谱

title('DSB波信号的频谱'); % 图标题标注

xlabel('f/Hz'); % 横坐标标注

ylabel('幅度/H(f)'); % 纵坐标标注

axis([-150 150 -inf inf]); % 横纵坐标范围设置

%% ******************SSB波信号时域波形******************

[t,ssb]=lpf(mf2,msf2,fc); % 频域低通滤波

%% 加噪声

SNR=20; %信噪比为 dB

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

figure(3); % 绘制第三幅图

subplot(211); % 窗口分割,将一幅图分割成2*1的

plot(t,2*ssb,'Linewidth',2); % 绘制SSB波形

title('SSB信号波形'); % 图标题标注

xlabel('t/时间'); % 横坐标标注

ylabel('幅度'); % 纵坐标标注

axis([0 2 -1.1 1.1]); % 横纵坐标范围设置

line([0,0.01],[0,0],'color','b','Linewidth',2);% 绘制一条从(0,0)到(0.1,0)的蓝色实线,线宽为2

%% ******************SSB波信号频域波形******************

[mf3,msf3]=T2F(t,ssb); % 傅里叶变换,得到纵坐标频谱和横坐标频率

subplot(212);

plot(mf3,abs(msf3),'Linewidth',2); % 画出SSB信号频谱

title('SSB波信号的频谱'); % 图标题标注

xlabel('f/Hz'); % 横坐标标注

ylabel('幅度/H(f)'); % 纵坐标标注

axis([-150 150 -inf inf]); % 横纵坐标范围设置

链接:file:///C:/Users/86182/Desktop/untitled3.html

还有基本函数

T2F.m文件,FFT功能

function [f,sf]= T2F(t,st)      % FFT
% dt = t(2)-t(1);
T=t(end);                       % 输入信号的时间最大值为T
df = 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);                   % 做FFT
sf = T/N * fftshift(sf);        % 最后输出,将0-fs频谱搬移到-fs/2-fs/2频谱
1
2
3
4
5
6
7
8
9
10
F2T.m文件,IFFT功能

function[t,st]=F2T(f,Sf)        % IFFT
df=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);             % 做IFFT
st=real(st);                    % 取实部
1
2
3
4
5
6
7
8
9
lpf.m文件,低通滤波功能

function[t,st]=lpf(f,sf,B)          % 频率LPF
df=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

matlab可直接复制

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值