您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页一个简单的单边带电台Matlab仿真

一个简单的单边带电台Matlab仿真

来源:化拓教育网


一个简单的单边带电台Matlab

仿真(总4页)

--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--

一个简单的单边带电台仿真

这个仿真以真实的音频信号作为输入,设计一个单边带发信机。将基带

信号调制为SSB信号后送入带通型高斯噪声信道,加入给定功率的噪声之后,再送入单边带接收机。单边带接收机将型号解调下来,通过计算机声卡将解调信号播放出来试听效果,从而对信道信噪比与解调音质之间的关系进行主观测试。

值。

现设计一个单边带发信机、带通信道和相应的接收机,参数定位如下

(1) 输入信号为一个话音信号,采样率为 8000Hz。话音输入后首先进行预滤

波,滤波器是一个频率范围在[300, 3400]Hz的带通滤波器,其目的是将话音频频谱在3400Hz以下。单边带调制的载波频率设计为 10kHz,调制输出上边带。要求观测单边带调制前后的信号功率谱。

(2) 信道是一个带限高斯噪声信道,其通带频率范围是[10000, 13500]Hz。能

够根据信噪比 SNR 的要求加入高斯噪声。

(3) 接收机采用相干解调方式。为了模拟载波频率误差对解调话音音质的影

响,设本地载波频率为 ,与发信机载波平率相差200Hz。解调滤波器设计为 300~3400Hz的带通滤波器。

1. 对音频输入与调制的仿真

2

根据设置的参数,系统中信号最高频率约为 14kHz。为了较好地显示调制波形,系统仿真采样率设为 50kHz,满足取样定理。由于话音信号的采样率为 8000Hz,与系统仿真采样率不等,因此,在进行信号处理之前,必须将话音的采样率提高到 50kHz,用插值函数来做这一任务。

先编写程序将基带音频信号读入,进行[300,3400]Hz的带通滤波,并将信号采样率提高到 50kHz,进行单边带调制之后,将调制输出结果保存为 wav 文件,文件名为 。程序如下:

% FileName:

% 功能:音频录入与调制

wav = interp1([1/fs:1/fs:t_end], wav, t, 'spline');

clc; clear all;

% 音频信号的希尔伯特变换

% 录音,采样点数为 1000,采样率为 8000

wav_hilbert = imag(hilbert(wav));

% jilu = wavrecord(5*8000, 8000, 'double');

% 载波频率

% wavwrite(jilu, '');

fc = 10000;

[wav, fs] = wavread('');

% 单边带调制

% 计算声音的时间长度

SSB_OUT = wav.*cos(2*pi*fc*t) -

t_end = 1/fs * length(wav); % 仿真系统采样率 Fs = 50000;

% 仿真系统采样时间点 t = 1/Fs:1/Fs:t_end;

% 设计 300~3400Hz 的带通滤波器 H(z) [fenzi, fenmu] = butter(3, [300 3400]/(fs/2)); % 对音频信号进行滤波

wav_hilbert.*sin(2*pi*fc*t);

figure(1);

subplot(2, 2, 1); plot(wav(53550:53750)); axis([0 200 ]);

subplot(2, 2, 2); psd(wav, 10000, Fs); axis([0 2500 -20 10]);

subplot(2, 2, 3); plot(SSB_OUT(53550:53750)); axis([0 200 ]);

subplot(2, 2, 4); psd(SSB_OUT, 10000, Fs); wav = filter(fenzi, fenmu, wav);

% 利用插值函数将音频信号的采样率提升为 Fs=50kHz

3

% 将 SSB 调制输出存盘备用 wavwrite*SSB_OUT, '');

程序仿真结果:

2. 对指定信噪比信道的仿真

仿真指定信噪比信道,仿真函数如下。

% FileName:

% 功能:计算实际信噪比 clear;

[in, Fs] = wavread('');

SNRdB = 20;

out = ChanelSimulink(in, SNRdB); wavwrite(out, Fs, '');

计算信噪比为20db 时的信道输出,将结果保存为 文件。输出仿真的实际测量信噪比为 db。

%

% 功能:仿真指定信噪比的信道

4

function out = ChanelSimulink(in, SNRdb) % SNR_db 设定信噪比 % in 输入信号序列 % out 信道输出序列 % 系统采样率 Fs = 50000;

Power_of_in = var(in); Power_of_noise = Power_of_in/(10.^(SNRdb/10));

% 信道带宽

bandwidth = 13500 - 10000;

% 噪声功率谱密度值 W/Hz

NO = Power_of_noise/bandwidth;

Gause_noise = sqrt(NO*Fs/2) .* randn(size(in));

% 噪声通道 10~

[num, den] = butter(4, [10000 13500]/(Fs/2));

signal_of_filter_out = filter(num, den, in);

noise_of_filter_out = filter(num, den, Gause_noise);

SNR_dB =

10*log10(var(signal_of_filter_out)/var(noise_of_filter_out));

% 测量得出信噪比

解调后图像,可见仿真结果还行!

5

% 信道输出

out = signal_of_filter_out + noise_of_filter_out; SNR_dB clear; Fs = 50000;

% 读入信道输出信号数据 [recvsignal, Fs] = wavread(''); t = (1/Fs:1/Fs:length(recvsignal)/Fs)'; % 本地载波频率

fc_local = 10000 -200;

% 本地载波

local_carrier = cos(2*pi*fc_local.*t);

% 相干解调

xianggan_out = recvsignal.*local_carrier;

% 设计 300~3400Hz 的带通滤波器

[fenzi, fenmu] = butter(3, [300 3400]/(Fs/2));

demod_out = filter(fenzi, fenmu, xianggan_out);

sound(demod_out/max(demod_out), Fs); wavwrite(demod_out, Fs, ''); subplot(1, 2, 1);

plot(5*demod_out(53550:53750)); axis([0 200 ]);subplot(1, 2, 2); psd(5*demod_out, 10000, Fs); axis([0 25000 -20 10]);

解调输出信号被保存为音频文件 ,并由 sound 函数播放。聆听播放解调输出信号的声音可知,在20dB信道信噪比条件下,即使解调本地载波频率误差达到 200Hz,声音仍然是清晰可懂的。

6

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务