• 大小: 4KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-09-21
  • 语言: Matlab
  • 标签: matlab  

资源简介

仿真模拟电台信号。对一段音频信号(鸟叫声)进行调制,通过高斯信道后解调,恢复出原音频信号。涉及到的调制方式有AM、DSB、SSB、FM

资源截图

代码片段和文件信息

close all;
clc;
%% 结论:频率颠倒的问题出在采样率!!!!
% Matlab自带音频,例如:chrip、train,是以Fs = 8192Hz采样得到的,其信号总时间为T = N / Fs
% 采样时间点为t = (0:N-1)/Fs,如果用载波对信号直接调制,需要注意以下事项:
% 1、如果不重新采样,需要使得载波频率fc < Fs / 2
% 2、如果想用更高频率的载波,必须提高音频信号的采样率。假设新的采样率为Fs1,不能单纯令t = (0:N-1)/Fs1,
% 就认为提高了采样率。我们还需要在音频时长不变的情况下,对音频信号进行插值,以模拟采样率的提高(会产生新的高频分量)
%% 音频信号
load chirp;
% y:音频信号,Fs:对音频信号的采样频率8192
y = y‘;
length(y);
%% 参数
fc = 20e3;
Fst = 4 * fc;               % 对载波的采样频率

y = resample(yFstFs);     % 对音频信号进行再采样
Nt = length(y);
tt = (0:Nt-1) / Fst;
%% 调制
disp(‘-----调制-----‘);
tic;
mode = “fm“;
if mode == “am“
    yi = (0.02 + y) .* cos(2 * pi * fc * tt);
elseif mode == “ssb“
    yi = 0.5 * y .* cos(2 * pi * fc * tt) - 0.5 * imag(hilbert(y)) .* sin(2 * pi * fc * tt);
elseif mode == “dsb“
    yi = y .* cos(2 * pi * fc * tt);
elseif mode == “fm“
    % 有时候,绘图观察调频信号,发现其幅度并非恒定
    % 原因:1、信号频率过高(Kf过大),采样率过低,导致绘图时出现了近似
    % 2、Kf过小,信号有一部分特征调制到包络上
    
    % kf设置过大,下面按照带宽计算公式,合理计算kf
    % dfm = kf * max(abs(y)) / (2 * pi)
    % B = 2 * (dfm / Fmax + 1) * F = 2 * (dfm + Fmax)
    % 应满足B / 2 < fc B / 2 + fc < Fst / 2
    
    Fmax = 4800;           % chirp信号的最高频率大概是5000HzFmax对应音频信号最高频率
    Bfm = min(2 * fcFst - 2 * fc);
    Bfm = Bfm * 0.9;       % 留下一定的带宽余量
    dfm = Bfm / 2 - Fmax;  % dfm表示由音频信号调频产生的最大频偏
    kf = 2 * pi * dfm / max(abs(y));
    phi = cumsum(y) / Fst;
    yi = cos(2 * pi * fc * tt + kf * phi);
else
    error(‘No such mode...‘);
end
toc;
%% 信道
disp(‘-----信道-----‘);
snr = 40;
out = awgn(yisnr‘measured‘);

%% 滤波、解调
% 电台信号仿真需不需要解调呢?
% 假设接收机的采样频率为Fsr。
% 若接收机采样频率Fsr > Fs1,仿真时需要插值
% 若接收机采样频率Fsr < Fs1,仿真时需要抽选
disp(‘-----解调-----‘);
tic;

Fsr = 1.2 * Fst;                            % 接收机采样频率

评论

共有 条评论