SSB信号调制解调(希尔伯特变换)
- 格式:doc
- 大小:45.50 KB
- 文档页数:9
%SSB信号调制解调%希尔伯特变换法产生(相移法)
clear;clc;
f0 = 1; %信源信号频率(Hz)
E0 = 1; %信源信号振幅(V)
E = 1; %载波分量振幅(V)
fc = 10; %载波分量频率(Hz)
t0 = 1; %信号时长
snr = 15; %解调器输入信噪比dB
dt = 0.003; %系统时域采样间隔
fs = 1/dt; %系统采样频率
df = 0.001; %所需的频率分辨率
t = 0:dt:t0;
Lt = length(t); %仿真过程中,信号长度
snr_lin = 10^(snr/10);%解调器输入信噪比
%-------------画出调制信号波形及频谱
%产生模拟调制信号
m = E*cos(2*pi*f0*t);
L = min(abs(m));%包络最低点
R = max(abs(m));%包络最高点
%画出调制信号波形和频谱
clf;
figure(1);
%%
%画出调制信号波形
subplot(421);
plot(t,m(1:length(t)));
axis([0,t0,-R-0.3,R+0.3]);%设置坐标范围
xlabel('t');title('调制信号');
set(gca,'YTick',-R:1:R);
subplot(422);
[M,m,df1,f] = T2F_new(m,dt,df,fs); %求出调制信号频谱
[Bw_eq] = signalband(M,df,t0); %求出信号等效带宽
plot(f,fftshift(abs(M))); %画出调制信号频谱%M:傅里叶变换后的频谱序列
xlabel('f');title('调制信号频谱');
axis([-fc-5*f0,fc+5*f0,0,max(M)+0.3]);
set(gca,'XTick', -10:10:10);
set(gca,'XGrid','on');
%%
%载波及其频谱
subplot(423);
c = cos(2*pi*fc*t); %载波
plot(t,c);
axis([0,t0,-E-0.2,E+0.2]);
xlabel('t');title('载波');
subplot(424); %载波频谱
[C,c,df1,f] = T2F_new(c,dt,df,fs);
plot(f,fftshift(abs(C))); %画出载波频谱
xlabel('f');title('载波频谱');
axis([-fc-5*f0,fc+5*f0,0,max(C)+0.3]);
set(gca,'XTick', -10:10:10);
set(gca,'XGrid','on');
%%
sm_low = 1/2 * cos(2*pi*f0*t) .* cos(2*pi*fc*t) + 1/2 * sin(2*pi*f0*t) .* sin(2*pi*fc*t);%下边带信号
sm_high = 1/2 * cos(2*pi*f0*t) .* cos(2*pi*fc*t) - 1/2 * sin(2*pi*f0*t) .* sin(2*pi*fc*t);%上边带信号
%%
subplot(425);
plot(t,sm_low(1:length(t)));
axis([0,t0,-R-0.3,R+0.3]);%设置坐标范围
xlabel('t');title('下边带信号');
set(gca,'YTick',-R:1:R);
[M_low,m_low,df1,f] = T2F_new(sm_low,dt,df,fs); %求出调制信号频谱
[Bw_eq_low] = signalband(M_low,df,t0); %求出信号等效带宽
subplot(426);
plot(f,fftshift(abs(M_low))); %画出调制信号频谱%M:傅里叶变换后的频谱序列
xlabel('f');title('下边带频谱');
axis([-fc-5*f0,fc+5*f0,0,max(M_low)+0.3]);
set(gca,'XTick', -10:10:10);
set(gca,'XGrid','on');
%%
subplot(427);
plot(t,sm_high(1:length(t)));
axis([0,t0,-R-0.3,R+0.3]);%设置坐标范围
xlabel('t');title('上边带信号');
set(gca,'YTick',-R:1:R);
[M_high,m_high,df1,f] = T2F_new(sm_high,dt,df,fs); %求出调制信号频谱[Bw_eq_high] = signalband(M_high,df,t0); %求出信号等效带宽
subplot(428);
plot(f,fftshift(abs(M_high))); %画出调制信号频谱%M:傅里叶变换后的频谱序列
xlabel('f');title('上边带频谱');
axis([-fc-5*f0,fc+5*f0,0,max(M_high)+0.3]);
set(gca,'XTick', -10:10:10);
set(gca,'XGrid','on');
%%
%将已调信号送入信道
%先根据所给信噪比产生高斯白噪声
figure(2);
signal_power = power_x(sm_low(1:Lt)); %已调信号的平均功率
noise_power = (signal_power * fs)/(snr_lin*4*Bw_eq_high); %求出噪声方差(噪声均值为0)
noise_std = sqrt(noise_power); %噪声标准差
noise = noise_std * randn(1,Lt); %产生噪声
%画出信道高斯白噪声波形及频谱,此时,噪声已实现,为确知信号,可求其频谱
subplot(321);
plot(t,noise);
axis([0,t0,-max(noise),max(noise)]);
xlabel('t');title('噪声信号');
subplot(322);
[noisef,noise,df1,f] = T2F_new(noise,dt,df,fs); %噪声频谱
plot(f,fftshift(abs(noisef))); %画出噪声频谱
xlabel('f');title('噪声频谱');
%%
%信道中的信号%叠加了噪声的已调信号频谱
sam = sm_low(1:Lt) + noise(1:Lt);
subplot(323);
plot(t,sam);
axis([0,t0,-max(sam),max(sam)]);
xlabel('t');title('信道中的信号');