• 通信原理实践(三)——FM调制


    一、FM调制

    image

    1、代码如下:

    clc,clear;
    
    fm = 500; % 调制信号频率(Hz)
    Am = 0.5; % 调制信号幅度
    fc = 5e3; % 载波频率(Hz)
    Ac = 1; % 载波幅度
    mf = 5; % 调频指数
    
    
    %%
    %firstly
    kf = mf * 2 * pi * fm / Am
    diatf = kf * Am
    B = 2 * (mf + 1) * fm
    
    %%
    %secondly
    fs = 64e3; % 采样率
    N = 3000; % 样点总数
    t = (0:N-1)'/fs; % 时间t
    
    %绘制时域波形
    m_t = Am*sin(2*pi*fm*t); % 调制信号
    phi_t = kf*cumsum(m_t)/fs; % 相位积分
    s_t = cos(2*pi*fc*t + phi_t); % 已调信号
    figure(1)
    subplot(1,3,1)
    plot(t, s_t , 'b'); % 绘波形
    xlabel('time');
    ylabel('amplitude');
    title('时域波形');
    
    %绘制功率谱
    L = length(s_t);               % 取得序列长度
    u = fftshift(fft(s_t ));       % 离散傅里叶变换,求频谱
    u_pow = pow2db(abs(u).^2);     % 幅度转为dB
    w = (0:L-1)'*fs/L - 1/2*fs;    % 横坐标-频率
    
    subplot(1,3,2);
    plot(w, u_pow);
    grid on;
    xlabel('frequency(Hz)');
    ylabel('magnitude(dB)');
    title('功率谱');
    
    
    
    
    %%
    %fortly
    
    [lpf_b,lpf_a] = butter(3, (fc/5)/(fs/2)); % 设计低通滤波器
    t = (0:N-1)'/fs; % 时间t
    r_t = s_t;
    subplot(1,3,3)
    r_d_t = [0;diff(r_t)]; % 求微分
    r_e_t = abs(r_d_t); % 包络检波
    demod_t = filter(lpf_b, lpf_a, r_e_t); % 滤波
    plot(t, demod_t , 'b'); % 绘图
    title('解调波形');
    
    
    %%
    %thirdly
    fs_J=100e3;
    t=(0:N-1)';
    N_J=3000000;
    t_J=(0:N_J-1)';
     
    sm=Am*cos(2*pi*fm/fs*t);
    sfm_J=Ac*cos(2*pi*fc/fs_J*t_J+mf*sin(2*pi*fm/fs_J*t_J));
    
    Sfm=fft(sfm_J);
    figure;
    plot(abs(Sfm));
     
    i=0:9
    J=besselj(i,mf);
    J_comp=abs(J/J(1))

    2、结果分析

    image

    image

    在进行功率谱分析的时候,可以将采样点增大,而绘图的采样点不变,这样子得到的功率谱会更加离散,便于和贝塞尔函数进行比较。

    二、L+R音频调制

    image

    1、流程设计

    image

    2、代码如下

    clear all;clc;
    
    %载入信号
    load('fm_cap.mat');
    fm_cap = resample(fm_cap,1,4);  %降低采样率
    
    fs = 500e3;                % 采样率
    N = length(fm_cap);        % 样点数
    t = (0:N-1)'/fs;           % 时间t
    
    r_d_t = [0;diff(fm_cap)];  % 求微分
    r_e_t = abs(hilbert(r_d_t));
    r_e_t = r_e_t - sum(r_e_t)/N;
    
    
    plot(t, r_e_t , 'b');      % 绘图
    [lpf_b,lpf_a] = butter(5, 10e3/(fs/2)); % 设计低通滤波器
    demod_t = filter(lpf_b, lpf_a, r_e_t); % 滤波
    
    demod_t = resample(demod_t,16,125);
    demod_t = demod_t ./ max(demod_t);
    sound(demod_t,64e3);
  • 相关阅读:
    WPF
    Xamarin.Forms + Prism,整理页面导航跳转流程
    Xamarin.Forms踩坑整理
    整理
    WPF
    LINQ中,Single()、SingleOrDefault()的解析、示例
    InstallShield打包
    Centos7安装jexus,部署asp.net core,asp.net mvc
    c#修改webConfig的内容
    .net core 3.1简单swagger配置教程
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4886890.html
Copyright © 2020-2023  润新知