900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > matlab单边带调幅系统的建模仿真(笔记)

matlab单边带调幅系统的建模仿真(笔记)

时间:2023-10-16 05:39:47

相关推荐

matlab单边带调幅系统的建模仿真(笔记)

单边带调幅系统的建模仿真

希尔伯特变换

实信号 x(t) 的希尔伯特变换就是将该信号中所有频率成分的信号份量移相 −π/2 而得到的新信号,记为 x^(t)\hat{x}(t)x^(t)。对于单频率正弦波信号,设 m(t) = Acos(2πft + φ),则其希尔伯特变换为

m^(t)=Acos⁡(2πft+ϕ−π2)=Asin⁡(2πft+ϕ)\hat{m}(t)=A \cos \left(2 \pi f t+\phi-\frac{\pi}{2}\right)=A \sin (2 \pi f t+\phi)m^(t)=Acos(2πft+ϕ−2π​)=Asin(2πft+ϕ)

对於任意实周期信号 x(t),可用周期傅里叶级数展开表示为

x(t)=∑n=0∞ancos⁡(2πnft+ϕn)x(t)=\sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi n f t+\phi_{n}\right) x(t)=n=0∑∞​an​cos(2πnft+ϕn​)

希尔伯特变换为

x^(t)=∑n=0∞ancos⁡(2πnft+ϕn−π2)=∑n=0∞ansin⁡(2πnft+ϕn)\begin{aligned} \hat{x}(t) &=\sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi n f t+\phi_{n}-\frac{\pi}{2}\right) \\ &=\sum_{n=0}^{\infty} a_{n} \sin \left(2 \pi n f t+\phi_{n}\right) \end{aligned} x^(t)​=n=0∑∞​an​cos(2πnft+ϕn​−2π​)=n=0∑∞​an​sin(2πnft+ϕn​)​

实信号 x(t) 的解析信号 y(t) 是一个复信号,其实部为信号 x(t) 本身,其虚部为 x(t) 的希尔波特变换 x^(t)\hat{x}(t)x^(t)。即

y(t)=x(t)+jx^(t)y(t)=x(t)+\mathrm{j} \hat{x}(t) y(t)=x(t)+jx^(t)

例如对x(t)=cos(t)进行希尔伯特变换的程序如下:

t = 0:0.1:25;s = cos(t);s_h = hilbert(s);plot(t,real(s,h),t,imag(s_h),'k--');

单边带调幅与解调原理

设基带信号为:

m(t)=∑n=0∞ancos⁡(2πnft+ϕn)m(t)=\sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi n f t+\phi_{n}\right) m(t)=n=0∑∞​an​cos(2πnft+ϕn​)

则以Acos(2pifc*t)为载波的双边带输出(DSB)信号为:

sDSB(t)=m(t)Acos⁡2πfct=Acos⁡2πfct∑n=0∞ancos⁡(2πnft+ϕn)=A2∑n=0∞ancos⁡(2π(fc+nf)t+ϕn)+A2∑n=0∞ancos⁡(2π(fc−nf)t−ϕn).\begin{aligned} s_{D S B}(t) &=m(t) A \cos 2 \pi f_{c} t \\ &=A \cos 2 \pi f_{c} t \sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi n f t+\phi_{n}\right) \\ &=\frac{A}{2} \sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi\left(f_{c}+n f\right) t+\phi_{n}\right)+\frac{A}{2} \sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi\left(f_{c}-n f\right) t-\phi_{n}\right).\end{aligned} sDSB​(t)​=m(t)Acos2πfc​t=Acos2πfc​tn=0∑∞​an​cos(2πnft+ϕn​)=2A​n=0∑∞​an​cos(2π(fc​+nf)t+ϕn​)+2A​n=0∑∞​an​cos(2π(fc​−nf)t−ϕn​).​

上式第一项为上边带,第二项为下边带。上边带的调制输出为:

sSSB(t)=A2∑n=0∞ancos⁡(2π(fc+nf)t+ϕn)=A2∑n=0∞(ancos⁡(2πnft+ϕn)cos⁡2πfct−ansin⁡(2πnft+ϕn)sin⁡2πfct)=A2m(t)cos⁡2πfct−A2m^(t)sin⁡2πfct\begin{aligned} s_{S S B}(t) &=\frac{A}{2} \sum_{n=0}^{\infty} a_{n} \cos \left(2 \pi\left(f_{c}+n f\right) t+\phi_{n}\right) \\ &=\frac{A}{2} \sum_{n=0}^{\infty}\left(a_{n} \cos \left(2 \pi n f t+\phi_{n}\right) \cos 2 \pi f_{c} t-a_{n} \sin \left(2 \pi n f t+\phi_{n}\right) \sin 2 \pi f_{c} t\right) \\ &=\frac{A}{2} m(t) \cos 2 \pi f_{c} t-\frac{A}{2} \hat{m}(t) \sin 2 \pi f_{c} t \end{aligned} sSSB​(t)​=2A​n=0∑∞​an​cos(2π(fc​+nf)t+ϕn​)=2A​n=0∑∞​(an​cos(2πnft+ϕn​)cos2πfc​t−an​sin(2πnft+ϕn​)sin2πfc​t)=2A​m(t)cos2πfc​t−2A​m^(t)sin2πfc​t​

下边带为

sSSB(t)=A2m(t)cos⁡2πfct+A2m^(t)sin⁡2πfcts_{S S B}(t)=\frac{A}{2} m(t) \cos 2 \pi f_{c} t+\frac{A}{2} \hat{m}(t) \sin 2 \pi f_{c} t sSSB​(t)=2A​m(t)cos2πfc​t+2A​m^(t)sin2πfc​t

例题1

设基带信号为一个在 150Hz 到 400Hz 内幅度随频率逐渐递减的音频信号,载波信号为 1000Hz 的正弦波,幅度为 1。仿真采样率设为 10000Hz,仿真时间 1 秒。求 SSB 调制输出信号波形和频谱。

clear;Fs=10000;% 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波 coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波 sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBs_SSB2=m_t.*carriercos+m_t90shift.*carriersin; % 下边带SSB% 下面作出各波形以及频谱figure(1);subplot(4,2,1); plot(t(1:100),carriercos(1:100),...t(1:100),carriersin(1:100),'--r'); % 载波subplot(4,2,2); plot([0:9999],abs(fft(carriercos))); % 载波频谱axis([0 2000 -500 6000]);subplot(4,2,3); plot(t(1:100),m_t(1:100)); % 基带信号subplot(4,2,4); plot([0:9999],abs(fft(m_t))); % 信号频谱axis([0 2000 -500 6000]);subplot(4,2,5); plot(t(1:100),s_SSB1(1:100)); % SSB波形上边带subplot(4,2,6); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱上边带axis([0 2000 -500 6000]);subplot(4,2,7); plot(t(1:100),s_SSB2(1:100)); % SSB波形下边带subplot(4,2,8); plot([0:9999],abs(fft(s_SSB2))); % SSB频谱下边带axis([0 2000 -500 6000]);

例题2

对例题1产生的单边带(上边带)信号进行相干解调,仿真其解调波形和幅度频谱。

clear;Fs=10000;% 仿真的采样率t=1/Fs:1/Fs:1; % 仿真时间点m_t(Fs*1)=0; % 基带信号变量初始化for F=150:400 % 基带信号发生:频率150Hz~400Hzm_t=m_t+0.003*sin(2*pi*F*t)*(400-F); % 幅度随线性递减endm_t90shift=imag(hilbert(m_t)); % 基带信号的希尔伯特变换carriercos=cos(2*pi*1000*t); % 1000Hz载波 coscarriersin=sin(2*pi*1000*t); % 1000Hz正交载波 sins_SSB1=m_t.*carriercos-m_t90shift.*carriersin; % 上边带SSBout=s_SSB1.*carriercos;% 相干解调[a,b]=butter(4, 500/(Fs/2)); % 低通滤波器设计4阶,截止频率为500Hzdemodsig=filter(a,b,out); % 解调输出% 下面作出各波形以及频谱figure(1);subplot(3,2,1); plot(t(1:100),s_SSB1(1:100)); % SSB波形subplot(3,2,2); plot([0:9999],abs(fft(s_SSB1))); % SSB频谱axis([0 5000 -500 6000]);subplot(3,2,3); plot(t(1:100),out(1:100)); % 相干解调波形subplot(3,2,4); plot([0:9999],abs(fft(out))); % 相干解调频谱axis([0 3000 -500 6000]);subplot(3,2,5); plot(t(1:100),demodsig(1:100)); % 低通输出信号subplot(3,2,6); plot([0:9999],abs(fft(demodsig)));% 低通输出信号的频谱axis([0 3000 -500 6000]);

例题3

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

(1)输入话音信号为一个话音信号,采样率 8000Hz。话音输入后首先进行预滤波,预滤5.6 单边带调幅系统的建模仿真 预滤波器是一个频率范围在 [300,3400]Hz的带通滤波器。其目的是将话音频谱限制在 3400Hz 以下。单边带调制的载波频率设计为 10KHz,调制输出上边带。要求观测单边带调制前後的信号功率谱。

(2)信道是一个带限高斯噪声信道,其通带频率范围是 [10000,13500]Hz。要求能够根据信噪比 SNR 要求加入高斯噪声。

(3)接收机采用相干解调方式。为了模拟载波频率误差对解调话音音质的影响,设本地载波频率为 9.8KHz,与发信机载波频率相差 200Hz。解调滤波器设计为 300Hz 到 3400Hz 的带通滤波器。

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

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

[wav,fs]=audioread('GDGvoice8000.wav');t_end=1/fs *length(wav); % 计算声音的时间长度Fs=50000; % 仿真系统采样率t=1/Fs:1/Fs:t_end; % 仿真系统采样时间点% 设计300Hz~3400Hz的带通预滤波器H(z) [fenzi,fenmu]=butter(3,[300 3400]/(fs/2));% 对音频信号进行预滤波 wav=filter(fenzi,fenmu,wav);% 利用插值函数将音频信号的采样率提升为Fs=50KHz wav=interp1([1/fs:1/fs:t_end],wav,t,'spline');wav_hilbert=imag(hilbert(wav)); % 音频信号的希尔伯特变换fc=10000; % 载波频率HzSSB_OUT=wav.*cos(2*pi*fc*t)-wav_hilbert.*sin(2*pi*fc*t); % 单边带调制 figure(1); % 观察调制前后频谱 subplot(2,2,1); plot(wav(53550:53750));axis([0 200 -0.3 0.3]);subplot(2,2,2); psd(wav, 10000, Fs); axis([0 25000 -20 10]);subplot(2,2,3); plot(SSB_OUT(53550:53750)); axis([0 200 -0.3 0.3]);subplot(2,2,4); psd(SSB_OUT, 10000, Fs); axis([0 25000 -20 10]);audiowrite('SSB_OUT.wav',0.5*SSB_OUT,Fs);% 将SSB调制输出存盘备用

音频文件下载

为了仿真指定信噪比的信道,编写信道仿真函数如下:

function out=ch5example9prog2(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; % 信道带宽N0=Power_of_noise/bandwidth; % 噪声功率谱密度值W/HzGauss_noise=sqrt(N0*Fs/2).*randn(size(in));[num, den]=butter(4, [10000 13500]/(Fs/2)); % 带通信道10KHz到13.5KHzsignal_of_filter_out=filter(num, den, in);noise_of_filter_out=filter(num, den, Gauss_noise);SNR_dB=10*log10(var(signal_of_filter_out)/var(noise_of_filter_out)) % 测量得出的信噪比out=signal_of_filter_out+noise_of_filter_out; % 信道输出

利用信道仿真函数计算 SSB 调制信号通过信道后的输出结果,例如计算出信道信噪比为 20dB 时的信道输出,并将结果保存为「 Channel OUT.wav 」文件,输出仿真的实际测量信噪比为 19.7dB,与设置值相符合。

clear;[in, Fs] = audioread("SSB_OUT.wav");SNRdB = 20;out = ch5example9prog2(in, SNRdB);audiowrite("channel_out.wav",out,Fs);SNRdB = 19.6597

最后实现单边接收机:

clear;[recvsignal, Fs]=audioread('Channel_out.wav');% 读入信道输出信号数据t=(1/Fs:1/Fs: length(recvsignal)/Fs)';fc_local=10000-200;% 本地载波频率9.8KHzlocal_carrier=cos(2*pi*fc_local.*t); % 本地载波xianggan_out=recvsignal.*local_carrier;% 相干解调[fenzi,fenmu]=butter(3,[300 3400]/(Fs/2)); % 设计300Hz~3400Hz的带通滤波器demod_out=filter(fenzi,fenmu,xianggan_out); % 对相干输出信号进行滤波sound(demod_out/max(demod_out), Fs); % 播放解调音频audiowrite('SSBDemod_OUT.wav',demod_out,Fs); % 保存输出信号

摘选的书籍:《MATLAB/Simulink通信系统建模与仿真实例分析》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。