zoukankan      html  css  js  c++  java
  • 通信原理实验(一):调制与解调

    1.

    %生成AM信号
    N = 3000; % 长度
    fs = 48e3; % 采样率
    fm = 300; % 调制信号频率
    Am = 0.5; % 调制信号幅度
    fc = 8e3; % 载波频率
    Ac = 1; % 载波幅度
    A0 = 5/3; % 直流分量
    t = (0:N-1)'/fs; % 时间t
    m_t = Am*sin(2*pi*fm*t); % 产生调制信号
    c_t = Ac*cos(2*pi*fc*t); % 产生载波信号
    s_t = (m_t + A0) .* c_t; % 调制
    plot(t, s_t , 'b'); % 绘波形
    xlabel('time');
    ylabel('amplitude');
    %读取音频文件
    [y1,Fs] = audioread('MayDay.mp3');%读文件
    t1=0:1/Fs:(length(y1)-1)*(1/Fs);
    figure(1)
    plot(t1,y1);xlabel('t'),ylabel('幅度')
    title('mayday'),axis([0,(length(y1)-1)*(1/Fs),-0.4,0.5])
    %sound(y1,Fs);%发出声音
    
    
    %生成AM信号
    N = length(y1); % 长度
    fs = Fs; % 采样率
    fc = 200e3; % 载波频率
    Ac = 1; % 载波幅度
    Ma = 0.3;%调制系数
    y11=abs(y1);
    max_y11=max(y11);
    A0 = max_y11/Ma; % 直流分量
    t = (0:N-1)'/fs; % 时间t
    c_t = Ac*cos(2*pi*fc*t); % 产生载波信号
    s_t = (y11 + A0) .* c_t; % 调制
    figure(2)
    plot(t, s_t , 'b'); % 绘波形
    xlabel('time');
    ylabel('amplitude');

    2.

    %AM信号解调
    fs = 48e3; % 采样率
    fc = 8e3; % 本地振荡器频率
    phi_c = 0; % 本地振荡器初相
    fm = 300; % 调制信号频率
    b = fir1(20, fc/(fs/2)); % 设计截止频率为fc的FIR低通滤波器
    r_t = s_t;
    N = length(r_t); % 序列长度
    t = (0:N-1)'/fs; % 时间t
    c_t = 2*cos(2*pi*fc*t+phi_c); % 本地振荡器波形
    figure(1)
    plot(t, c_t , 'b'); % 绘制本地振荡器波形
    mix_t = r_t .* c_t; % 混频
    figure(2)
    plot(t, mix_t , 'b'); % 绘制混频波形
    filtered_t = filter(b,1,mix_t); % 滤波
    figure(3)
    plot(t, filtered_t , 'b'); % 绘制解调波形
    demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
    % 去除DC分量
    figure(4)
    plot(t, demod_t , 'b'); % 绘制去除直流分量后的解调波形
    xlabel('time');
    ylabel('amplitude');

    3.两种绘制功率谱的方式

    %绘制功率谱
    fs = 48e3; % 采样率 
    L = length(s_t); % 取得序列长度 
    u = fft(s_t ); % 离散傅里叶变换,求频谱 
    u_pow = 10*log10(abs(u).^2); % 幅度转为dB 
    w = (0:L-1)'*fs/L; % 横坐标-频率 
    plot(w, u_pow); % 绘图 
    grid on; 
    xlabel('frequency(Hz)'); 
    ylabel('magnitude(dB)');
    fs = 48e3; % 采样率 
    psd(spectrum.periodogram, s_t, 'Fs', fs, 'CenterDC', 1); % 谱估计

    4.

    %产生一个低通滤波器,求幅度响应
    fs = 48e3; % 采样率 
    fcut = 5e3; % 截止频率,对于butter来说即-3dB点 
    filterN = 4; % Butterworth 阶数 
    [b,a] = butter(filterN, fcut/(fs/2)); % 设计滤波器 
    freqz(b, a, 512, fs); % 查看频响 
    x = zeros(128,1); % 产生delta序列 
    x(1) = 1; 
    y = filter(b, a, x); % 滤波,获取其冲激响应 
    u = fft(y); % 离散傅里叶变换,求频谱 
    u_pow = 20*log10(abs(u)); % 幅度转为dB 
    w = (0:length(u)-1)'*fs/length(u); % 横坐标-频率 
    figure; 
    plot(w,u_pow); % 绘图 
    grid on; % 显示网格 
    xlabel('frequency(Hz)'); 
    ylabel('magnitude(dB)');

    5.

    %相干解调
    fs = 48e3; % 采样率
    fc = 4e3; % 本地振荡器频率
    phi_c = 0; % 本地振荡器初相
    fm = 110; % 调制信号频率
    b = fir1(20, fc/(fs/2)); % 设计截止频率为fc
    % 的FIR低通滤波器
    r_t = s_t;
    N = length(r_t); % 序列长度
    t = (0:N-1)'/fs; % 时间t
    c_t = cos(2*pi*fc*t+phi_c); % 本地振荡器波形
    mix_t = r_t .* c_t; % 混频
    filtered_t = filter(b,1,mix_t); % 滤波
    demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
    % 去除DC分量
    plot(t, demod_t , 'b'); % 绘制解调波形
    xlabel('time');
    ylabel('amplitude');

    6.

    %产生SSB信号
    m_t2 = hilbert(m_t);
    c_t = cos(2*pi*fc*t); % 本地振荡器波形
    c_t2 = sin(2*pi*fc*t); % 本地振荡器波形
    ssb_t1=m_t.*c_t+m_t2.*c_t2;%下边带
    ssb_t2=m_t.*c_t-m_t2.*c_t2;%上边带
    figure(1)
    plot(t,ssb_t1)
    title('SSB信号下边带')
    figure(2)
    plot(t,ssb_t2)
    title('SSB信号上边带')
    
    u1 = fftshift(fft(ssb_t1 )); % 离散傅里叶变换,求频谱
    u1_pow = pow2db(abs(u1).^2); % 幅度转为dB
    w = (0:L-1)'*fs/L - 1/2*fs; % 横坐标-频率
    figure(3)
    plot(w, u1_pow);
    title('SSB信号下边带功率谱')
    grid on;
    xlabel('frequency(Hz)');
    ylabel('F(w)');
    
    u2 = fftshift(fft(ssb_t2 )); % 离散傅里叶变换,求频谱
    u2_pow = pow2db(abs(u2).^2); % 幅度转为dB
    w = (0:L-1)'*fs/L - 1/2*fs; % 横坐标-频率
    figure(4)
    plot(w, u2_pow);
    title('SSB信号上边带功率谱')
    grid on;
    xlabel('frequency(Hz)');
    ylabel('F(w)');

    7.

    %包络检波
    x4=hilbert(s_t);
    demod_t = x4 - sum(x4)/length(x4);
    figure(1)
    plot(t,demod_t);
    title('解调信号')
    sound(demod_t,fs)
  • 相关阅读:
    SQLServer三种自定义函数
    IE下必须点击一下页面空白的地方才可以激活onchange事件
    1234跨年总结(2014年总结)
    半透明背景(兼容IE)
    EF Power Tools
    ASP.NET MVC报错: Multiple types were found that match the controller named
    URI、URL和URN
    SQLServer中临时表与表变量的区别分析
    C#分部方法
    __flash__removeCallback 未定义错误
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/4852567.html
Copyright © 2011-2022 走看看