失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > matlab dsb调制 幅度调制(AM DSB SSB VSB)

matlab dsb调制 幅度调制(AM DSB SSB VSB)

时间:2023-02-23 06:12:13

相关推荐

matlab dsb调制 幅度调制(AM DSB SSB VSB)

% 幅度调制 AM 信号输出和功率谱 程序清单

dt=0.001;%时间采样频谱

fmax=1;%信源最高频谱

fc=10;%载波中心频率

T=5;%信号时长

N=T/dt;

t=[0:N-1]*dt;

mt=sqrt(2)*cos(2*pi*fmax*t);%信源

A=2;

s_am=(A+mt).*cos(2*pi*fc*t);

[f,Xf]=FFT_SHIFT(t,s_am);%调制信号频谱

PSD=(abs(Xf).^2)/T;%调制信号功率谱密度

figure(1)

subplot(211);

plot(t,s_am);hold

on;%画出AM信号波形

plot(t,A+mt,'r--');%表示AM包络

title('AM调制信号及其包络');

xlabel('t');

subplot(212);%画出功率谱图形

plot(f,PSD);

axis([-2*fc 2*fc 0 1.5*max(PSD)]);

title('AM信号功率谱');

xlabel('f');

% -----------------------------------------------------

% 抑制载波双边带调制DSB

dt=0.001;

%时间采样频谱

fmax=1;

%信源最高频谱

fc=10;

%载波中心频率

T=5;

%信号时长

t=0:dt:T;

mt=sqrt(2)*cos(2*pi*fmax*t);

%信源

s_dsb=mt.*cos(2*pi*fc*t);

[f,sf]=FFT_SHIFT(t,s_dsb);

%调制信号频谱

PSD=(abs(sf).^2)/T;%调制信号功率谱密度

figure(1)

subplot(211)

plot(t,s_dsb);hold

on;%画出DSB信号波形

plot(t,mt,'r--');%标示mt波形

title('DSB调制信号及其包络');

xlabel('t');

subplot(212)

plot(f,PSD);

axis([-2*fc 2*fc 0 max(PSD)]);

title('DSB信号功率谱');

xlabel('f');

% ---------------------------------------------------------

% 单边带调制 SSB

dt=0.001;

%时间采样频谱

fmax=1;%信源最高频谱

fc=10;%载波中心频率

T=5;

t=0:dt:T;

mt=sqrt(2)*cos(2*pi*fmax*t);%信源

s_ssb=real(hilbert(mt).*exp(j*2*pi*fc*t));

[f,sf]=FFT_SHIFT(t,s_ssb);%单边带信号频谱

PSD=(abs(sf).^2)/T;%单便带信号功率谱

figure(1)

subplot(211)

plot(t,s_ssb);hold

on;%画出SSB信号波形

plot(t,mt,'r--');%标示mt

的包络

title('SSB调制信号');

xlabel('t');

subplot(212)

plot(f,PSD);

axis([-2*fc 2*fc 0 max(PSD)]);

title('SSB信号功率谱');

xlabel('f');

% --------------------------------------------

% 调用函数

function [f, sf]=FFT_SHIFT(t, st)

%This function is FFT to calculate a signal’s Fourier

transform

%Input: t: sampling time , st : signal data. Time length must

greater thean 2

%output: f : sampling frequency , sf: frequen

%output is the frequency and the signal spectrum

dt=t(2)-t(1);

T=t(end);

df=1/T;

N=length(t);

f=[-N/2:N/2-1]*df;

sf=fft(st);

sf=T/N*fftshift(sf);

% ---------------------------------------

% 显示模拟调制的波形及其解调方法VSB,文件名:VSB.m

% Signal

dt=0.001;

fmax=5;

fc=20;

T=5;

N=T/dt;

t=[0:N-1]*dt;

mt=sqrt(2)*(cos(2*pi*fmax*t)+sin(2*pi*0.5*fmax*t));

% VSB modulation

s_vsb=mt.*cos(2*pi*fc*t);

B1=0.2*fmax;

B2=1.2*fmax;

[f,sf]=FFT_SHIFT(t,s_vsb);

[t,s_vsb]=vsbmd(f,sf,B1,B2,fc);

% Power Spectrum Density

[f,sf]=FFT_SHIFT(t,s_vsb);

PSD=(abs(sf).^2)/T;

% Plot VSB and PSD

figure(1)

subplot(211)

plot(t,s_vsb);hold on;

plot(t,mt,'r--');

title('VSB调制信号');

xlabel('t');

subplot(212)

plot(f,PSD);

axis([-2*fc2*fc0max(PSD)]);

title('VSB信号功率谱');

xlabel('f');

%----------------------------------------------------

function[t,st]=vsbmd(f,sf,B1,B2,fc)

% This function is a residual bandpass filter

% Inputsf: sample frequency, sf: frequency

spectrum data

%B1: residual bandwidth, B2: highest freq of the baseband

signal

% Outputs t:sample time,st: signal data

df=f(2)-f(1);

T=1/df;

hf=zeros(1,length(f));

bf1=[floor((fc-B1)/df):floor((fc+B1)/df)];

bf2=[floor((fc-B1)/df)+1:floor((fc+B2)/df)];

f1=bf1+floor(length(f)/2);

f2=bf2+floor(length(f)/2);

stepf=1/length(f1);

hf(f1)=0:stepf:1-stepf;

hf(f2)=1;

f3=-bf1+floor(length(f)/2);

f4=-bf2+floor(length(f)/2);

hf(f3)=0:stepf:(1-stepf);

hf(f4)=1;

yf=hf.*sf;

[t,st]=IFFT_SHIFT(f,yf);

st=real(st);

%------------------------------------

function[t,st]=IFFT_SHIFT(f,Sf)

df=f(2)-f(1);

fmax=(f(end)-f(1)+df);

dt=1/fmax;

N=length(f);

t=[0:N-1]*dt;

Sf=fftshift(Sf);

st=fmax*ifft(Sf);

st=real(st);

%参考书:赵鸿图 茅艳通信原理MATLAB仿真教材[M]. 人民邮电出版社

p125【例 5-4】【例 5-5】 【例

5-6】 【例5-7】

如果觉得《matlab dsb调制 幅度调制(AM DSB SSB VSB)》对你有帮助,请点赞、收藏,并留下你的观点哦!

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